예제 #1
0
        public OfferedRentOutput processOfferedRentInput(OfferedRentInput offeredRentInput, string userAgent)
        {
            OfferedRentOutput offeredRentOutput = new OfferedRentOutput();

            CalculateRent(offeredRentInput, offeredRentOutput);
            offeredRentOutput.qualityMicro = offeredRentInput.qualityMicro ?? 0;
            offeredRentOutput.zip          = offeredRentInput.address.zip;
            offeredRentOutput.town         = offeredRentInput.address.town;
            offeredRentOutput.street       = offeredRentInput.address.street;
            offeredRentOutput.CategoryCode = offeredRentInput.categoryCode;
            offeredRentOutput.country      = offeredRentInput.address.country;

            ////Saving
            try
            {
                SaveRentPropertyDetails(MapRentBuisnessDataToDatabaseModel(null, null, null, offeredRentInput.deviceId, offeredRentOutput), userAgent);
            }
            catch (Exception ex)
            {
                RealEstateRepository realEstateRepository = new RealEstateRepository();
                realEstateRepository.saveException(ex.Message, Convert.ToString(ex.InnerException), ex.StackTrace);
                return(offeredRentOutput);
            }


            return(offeredRentOutput);
        }
예제 #2
0
        public HttpResponseMessage OfferedRentAppraiseProperty([FromBody] OfferedRentInput offeredRentInput)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
                }

                apiManager = new APIManager(token);

                string userAgent = String.Empty;

                if (Request.Headers.UserAgent != null)
                {
                    userAgent = Convert.ToString(Request.Headers.UserAgent);
                }

                AppServiceApi.Models.OfferedRentOutput offeredRentOutput = apiManager.processOfferedRentInput(offeredRentInput, userAgent);

                return(Request.CreateResponse(HttpStatusCode.OK, offeredRentOutput));
            }
            catch (Exception ex)
            {
                ErrorAsync(ex, Request.RequestUri.AbsoluteUri.ToString());
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new { message = "Bad Request" }));
            }
        }
예제 #3
0
        private void CalculateRent(OfferedRentInput offeredRentInput, OfferedRentOutput offeredRentOutput)
        {
            string priceUrl = String.Format("{0}/{1}", ConfigurationManager.AppSettings["Server"], ConfigurationManager.AppSettings["OfferedRentService"]);
            string postData = "[" + JsonConvert.SerializeObject(offeredRentInput) + "]";
            string result   = iaziClientsync.postApiRequest(priceUrl, postData, token);

            parseOfferedRentModelRJson(result, offeredRentOutput);
        }
예제 #4
0
        public OfferedRentOutput processImageLatLonForOfferedRent(string imageBase64, double?latitude, double?longitude, string deviceId, string userAgent)
        {
            OfferedRentOutput offeredRentOutput = new OfferedRentOutput();
            GoogleVisionApi   googleVisionApi   = new GoogleVisionApi();
            OfferedRentInput  offeredRentInput  = new OfferedRentInput();
            ImageCategory     imageCategory;
            string            country;
            string            countryCode;

            try
            {
                imageCategory = googleVisionApi.fetchCategoryForImage(imageBase64);
            }
            catch (Exception)
            {
                //imageBase64 = getImageAndConvertbase64();
                //imageCategory = googleVisionApi.fetchCategoryForImage(imageBase64);
                imageCategory = new ImageCategory();
                imageCategory.CategoryCode = -2;
                imageCategory.CategoryText = "Invalid Image";
            }

            getAddressForLatLong(latitude ?? 0.0, longitude ?? 0.0);

            if (reverseGeoCodeResult.Country != "Switzerland")
            {
                country     = "Switzerland";
                countryCode = "CH";

                offeredRentInput.address = new OfferedRentAddress()
                {
                    address = ConfigurationManager.AppSettings["DefaultFormatedAddress"],
                    zip     = offeredRentOutput.zip = ConfigurationManager.AppSettings["DefaultZip"],
                    town    = offeredRentOutput.town = ConfigurationManager.AppSettings["DefaultTown"],
                    street  = offeredRentOutput.street = ConfigurationManager.AppSettings["DefaultStreet"] + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second,
                    lat     = Convert.ToDouble(ConfigurationManager.AppSettings["DefaultLatitude"]),
                    lng     = Convert.ToDouble(ConfigurationManager.AppSettings["DefaultLongitude"]),
                    country = country
                };

                offeredRentOutput.minappraisalValue = Convert.ToInt64(latitude.ToString().Replace(".", String.Empty));
                offeredRentOutput.maxappraisalValue = Convert.ToInt64(longitude.ToString().Replace(".", String.Empty));
            }
            else
            {
                country     = reverseGeoCodeResult.Country;
                countryCode = "CH";

                offeredRentInput.address = new OfferedRentAddress()
                {
                    address = reverseGeoCodeResult.FormattedAddress,
                    zip     = offeredRentOutput.zip = reverseGeoCodeResult.Zip,
                    town    = offeredRentOutput.town = reverseGeoCodeResult.Town,
                    street  = offeredRentOutput.street = reverseGeoCodeResult.Street,
                    lat     = (double)latitude,
                    lng     = (double)longitude,
                    country = country
                };
            }

            if (imageCategory.CategoryCode != -1 && imageCategory.CategoryCode != -2)
            {
                getMicroRating(imageCategory.CategoryCode, offeredRentInput.address.lat ?? 0.0, offeredRentInput.address.lng ?? 0.0, countryCode);
                offeredRentInput.qualityMicro = offeredRentOutput.qualityMicro = ratingResponse.results.microRatingClass1To5 ?? 3;
                offeredRentInput.ortId        = getOrtId(countryCode, offeredRentInput.address.lat ?? 0.0, offeredRentInput.address.lng ?? 0.0, "en-US");
            }



            offeredRentOutput.country      = country;
            offeredRentOutput.CategoryCode = imageCategory.CategoryCode;

            switch (imageCategory.CategoryCode)
            {
            case 5:
                offeredRentInput.surfaceContract = Convert.ToInt16(ConfigurationManager.AppSettings["A2SurfaceLivingDefault"]); //set default for A2 for Surface
                offeredRentInput.categoryCode    = offeredRentOutput.CategoryCode;
                offeredRentOutput.category       = imageCategory.CategoryText;                                                  //" Single family House";
                break;

            case 6:
                offeredRentInput.surfaceContract = Convert.ToInt16(ConfigurationManager.AppSettings["A3SurfaceLivingDefault"]);
                offeredRentInput.categoryCode    = offeredRentOutput.CategoryCode;
                offeredRentOutput.category       = imageCategory.CategoryText; //" Condominium";
                break;

            case -1:
            case -2:
                offeredRentOutput.category = imageCategory.CategoryText;
                break;

            default:
                break;
            }

            if (imageCategory.CategoryCode != -1 && imageCategory.CategoryCode != -2)
            {
                CalculateRent(offeredRentInput, offeredRentOutput);
            }

            //Saving Property Details//
            try
            {
                RentData rentData = MapRentBuisnessDataToDatabaseModel(imageBase64, latitude, longitude, deviceId, offeredRentOutput);
                SaveRentPropertyDetails(rentData, userAgent);
            }
            catch (Exception ex)
            {
                RealEstateRepository realEstateRepository = new RealEstateRepository();
                realEstateRepository.saveException(ex.Message, Convert.ToString(ex.InnerException), ex.StackTrace);
                return(offeredRentOutput);
            }

            return(offeredRentOutput);
        }