﻿RequestHelper = function() {
}

RequestHelper.prototype = {
    GetCurrentRealtyId: function() {
        var realtyField = GetControlContextIndependent(GetControlId('HfRealtyID'));

        if (!realtyField)
            realtyField = GetControlContextIndependent('HfRealtyID');

        if (realtyField) {
            return realtyField.value;
        }

        return "";
    },

    BuildServiceRequest: function(propertyPaths) {
        return {
            Parameter: {},
            PropertyPaths: propertyPaths // []
        };
    },

    BuildSendAddressRequest: function(userId, realtyId) {
        var request = requestHelper.BuildServiceRequest();
        request.Parameter.UserID = userId;
        request.Parameter.RealtyID = realtyId;

        return request;
    },

    BuildStartSearchRequest: function(searchPhrase, source) {
        var request = requestHelper.BuildServiceRequest();
        request.Parameter.SearchPhrase = searchPhrase;
        request.Parameter.Source = source;

        return request;
    },

    BuildCreateSearchURLRequest: function(searchTermArray) {
        var request = requestHelper.BuildServiceRequest();
        request.Parameter.SearchParameters = searchTermArray;

        return request;
    },

    BuildSearchRequest: function(requestUrl, orderBy, orderDirection, start, end) {
        var request = requestHelper.BuildServiceRequest();
        request.Parameter.RequestUrl = requestUrl;
        request.Parameter.OrderBy = orderBy;
        request.Parameter.OrderDirection = orderDirection;
        request.Parameter.Skip = start;
        request.Parameter.TopSelector = end - start;

        return request;
    },

    BuildRecommendRequest: function(args) {
        var request = requestHelper.BuildServiceRequest();

        request.Parameter.ReceiverTitle = args.titleRecipient;
        request.Parameter.ReceiverFirstName = args.firstNameRecipient;
        request.Parameter.ReceiverLastName = args.lastNameRecipient;
        request.Parameter.SenderFirstName = args.firstNameSender;
        request.Parameter.SenderLastName = args.lastNameSender;
        request.Parameter.SenderEmail = args.mailSender;
        request.Parameter.ReceiverEmail = args.mailRecipient;
        request.Parameter.Comment = args.comment;
        request.Parameter.ID = requestHelper.GetCurrentRealtyId();

        return request;
    },

    BuildWishlistRequest: function(args) {
        var request = requestHelper.BuildServiceRequest();
        request.Parameter.WishList = {};

        request.Parameter.WishList.FirstName = args.firstName;
        request.Parameter.WishList.LastName = args.lastName;
        request.Parameter.WishList.Email = args.email;
        request.Parameter.WishList.BestContact = args.bestContact;
        request.Parameter.WishList.City = args.city;
        request.Parameter.WishList.Zip = args.zip;
        request.Parameter.WishList.Location = args.location;
        request.Parameter.WishList.Comment = args.comment;
        request.Parameter.WishList.DataUsage = args.dataUsage;
        request.Parameter.WishList.MaxPrice = args.maxPrice;
        request.Parameter.WishList.MobileNumber = args.mobile;
        request.Parameter.WishList.PhoneNumber = args.phoneNumber;
        request.Parameter.WishList.Source = args.objectType;
        request.Parameter.WishList.RealtyType = args.realtyType;
        request.Parameter.WishList.PhoneType = args.phoneType;
        request.Parameter.WishList.Street = args.street;
        request.Parameter.WishList.Surface = args.surface;
        request.Parameter.WishList.NumberOfRooms = args.numberOfRooms;

        return request;
    },

    BuildCallbackRequest: function(args) {
        var request = requestHelper.BuildServiceRequest();

        request.Parameter.FirstName = args.firstName;
        request.Parameter.LastName = args.lastName;
        request.Parameter.Email = args.mail;
        request.Parameter.Street = args.street;
        request.Parameter.Zip = args.zip;
        request.Parameter.City = args.city;
        request.Parameter.Title = args.title;
        request.Parameter.Phone = args.phone;
        request.Parameter.Mobile = args.mobile;
        request.Parameter.Visitation = args.visitDate;
        request.Parameter.MoreInformation = args.moreInfo;
        request.Parameter.Comment = args.comment;
        request.Parameter.VisitationDate = args.visitDateString;
        request.Parameter.VisitationTime = args.visitTimeString;
        request.Parameter.Callback = args.callbackRequest;

        var realtyId = requestHelper.GetCurrentRealtyId();
        if (realtyId) {
            request.Parameter.RealtyID = realtyId;
        }

        return request;
    },

    BuildSellRealtyRequest: function(args) {
        var request = requestHelper.BuildServiceRequest();

        request.Parameter.FirstName = args.firstName;
        request.Parameter.LastName = args.lastName;
        request.Parameter.Street = args.street;
        request.Parameter.Zip = args.zip;
        request.Parameter.City = args.city;
        request.Parameter.Phone = args.phoneNumber;
        request.Parameter.Mobile = args.mobile;
        request.Parameter.Email = args.email;
        request.Parameter.RealtyLocation = args.objectDistrict;
        request.Parameter.RealtyType = args.realtyType;
        request.Parameter.RealtyStreet = args.objectStreet;
        request.Parameter.RealtyZip = args.objectZip;
        request.Parameter.RealtyCity = args.objectCity;
        request.Parameter.ReferenceDate = args.referenceDate;
        request.Parameter.PhoneType = args.phoneType;
        request.Parameter.BestContact = args.bestContact;
        request.Parameter.Subsidiary = args.subsidiary;
        request.Parameter.Comment = args.comment;

        return request;
    }
}

var requestHelper = new RequestHelper();
