private IRentData GetSut()
        {
            IRentData sut = new RentData();

            mocker.SetupGet(o => o.Rent).Returns(rentMocker.Object);
            sut.Context = mocker.Object;

            return(sut);
        }
示例#2
0
 void GenerateRentsAndSells()
 {
     foreach (CustomerData customer in customers)
     {
         int sellsCount = customer.SellsCountGenerator.Next();
         Dictionary <Point, bool> sellPoints = new Dictionary <Point, bool>();
         for (int i = 0; i < sellsCount; ++i)
         {
             Point point = customer.Points[random.Next(customer.Points.Count - 1)];
             if (!sellPoints.ContainsKey(point))
             {
                 sellPoints.Add(point, true);
             }
         }
         for (int pointIndex = 0; pointIndex < customer.Points.Count - 1; ++pointIndex)
         {
             movieGenerator.ClearRepetitions();
             Point point      = customer.Points[pointIndex];
             Point nextPoint  = customer.Points[pointIndex + 1];
             int   rentsCount = customer.MoviesForRentCountGenerator.Next();
             for (int i = 0; i < rentsCount; ++i)
             {
                 RentData rent = new RentData();
                 rent.Movie  = movies[moviesMap[movieGenerator.Next()]];
                 rent.Format = formats[customer.MovieFormatGenerator.Next()];
                 rent.Days   = nextPoint.Day - point.Day - customer.OverdueDaysCountGenerator.Next();
                 point.Rents.Add(rent);
             }
             if (sellPoints.ContainsKey(point))
             {
                 GenerateSell(customer, point);
             }
         }
         Point lastPoint = customer.Points[customer.Points.Count - 1];
         movieGenerator.ClearRepetitions();
         int lastDayRentsCount = customer.LastDayRentsCount + customer.MoviesForRentCountGenerator.Next();
         for (int i = 0; i < lastDayRentsCount; ++i)
         {
             RentData rent = new RentData();
             rent.Days = daysCount - lastPoint.Day - customer.OverdueDaysCountLastDayGenerator.Next();
             if (rent.Days < 1)
             {
                 rent.Days = 1;
             }
             rent.Movie  = movies[moviesMap[movieGenerator.Next()]];
             rent.Format = formats[customer.MovieFormatGenerator.Next()];
             lastPoint.Rents.Add(rent);
         }
         if (sellPoints.ContainsKey(lastPoint))
         {
             GenerateSell(customer, lastPoint);
         }
     }
 }
示例#3
0
        void GenerateSell(CustomerData customer, Point point)
        {
            int sellsInReceiptCount = customer.SellsInReceiptCountGenerator.Next();

            for (int k = 0; k < sellsInReceiptCount; ++k)
            {
                RentData sell = new RentData();
                sell.Movie  = movies[moviesMap[movieGenerator.Next()]];
                sell.Format = formats[customer.MovieFormatGenerator.Next()];
                point.Sells.Add(sell);
            }
        }
        public void saveRentPropertyDetails(RentData rentData, string userAgent)
        {
            ////if (userAgent == null)
            //String userAgent = String.Empty;

            using (SqlCommand command = new SqlCommand())
            {
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "[Rent].[SavePropertyDetails]";

                command.Parameters.Add("@ImageBase64", SqlDbType.VarChar, -1).Value = rentData.realestateData.Image;
                command.Parameters.Add("@Latitude", SqlDbType.Decimal).Value        = rentData.realestateData.Latitude;
                command.Parameters.Add("@Longitude", SqlDbType.Decimal, 100).Value  = rentData.realestateData.Longitude;
                command.Parameters.Add("@SurfaceLiving", SqlDbType.Int, 100).Value  = rentData.realestateData.SurfaceLiving;
                //command.Parameters.Add("@LandSurface", SqlDbType.Int, 100).Value = realEstateData.LandSurface;
                command.Parameters.Add("@RoomNb", SqlDbType.Decimal).Value = rentData.realestateData.RoomNb;
                //command.Parameters.Add("@BathNb", SqlDbType.Int).Value = realEstateData.BathNb;
                command.Parameters.Add("@BuildYear", SqlDbType.VarChar).Value      = rentData.realestateData.BuildYear;
                command.Parameters.Add("@Lift", SqlDbType.VarChar).Value           = rentData.realestateData.Lift;
                command.Parameters.Add("@ObjectTypeCode", SqlDbType.VarChar).Value = rentData.realestateData.ObjectTypeCode;

                command.Parameters.Add("@MicroRating", SqlDbType.Decimal).Value        = rentData.realestateData.MicroRating;
                command.Parameters.Add("@CatCode", SqlDbType.Int).Value                = rentData.realestateData.CatCode;
                command.Parameters.Add("@AddressZip", SqlDbType.VarChar, 4).Value      = rentData.realestateData.AddressZip;
                command.Parameters.Add("@AddressTown", SqlDbType.VarChar, 100).Value   = rentData.realestateData.AddressTown;
                command.Parameters.Add("@AddressStreet", SqlDbType.VarChar, 100).Value = rentData.realestateData.AddressStreet;
                command.Parameters.Add("@Country", SqlDbType.VarChar, 100).Value       = rentData.realestateData.Country;
                command.Parameters.Add("@DeviceId", SqlDbType.VarChar, 100).Value      = rentData.realestateData.DeviceId;
                command.Parameters.Add("@UserId", SqlDbType.Int).Value      = rentData.realestateData.UserId;
                command.Parameters.Add("@ImageSize", SqlDbType.Int).Value   = rentData.realestateData.ImageSize;
                command.Parameters.Add("@ImageWidth", SqlDbType.Int).Value  = rentData.realestateData.ImageWidth;
                command.Parameters.Add("@ImageHeight", SqlDbType.Int).Value = rentData.realestateData.ImageHeight;

                command.Parameters.Add("@RealEstateGuid", SqlDbType.UniqueIdentifier).Value = rentData.realestateRent.RealEstateId;
                command.Parameters.Add("@AppraisalValue", SqlDbType.BigInt).Value           = rentData.realestateRent.AppraisalValue;
                command.Parameters.Add("@MinAppraisalValue", SqlDbType.BigInt).Value        = rentData.realestateRent.MinAppraisalValue;
                command.Parameters.Add("@MaxAppraisalValue", SqlDbType.BigInt).Value        = rentData.realestateRent.MaxAppraisalValue;
                command.Parameters.Add("@UserAgent", SqlDbType.VarChar, -1).Value           = userAgent;

                DataLibrary.ExecuteNonQuery(command);
            }
        }
示例#5
0
        private void SaveRentPropertyDetails(RentData rentData, string userAgent)
        {
            RealEstateRepository realEstateRepository = new RealEstateRepository();

            realEstateRepository.saveRentPropertyDetails(rentData, userAgent);
        }
示例#6
0
        private RentData MapRentBuisnessDataToDatabaseModel(string imageBase64, double?latitude, double?longitude, string deviceId, OfferedRentOutput offeredRentOutput)
        {
            RentData rentData = new RentData();

            if (imageBase64 != null)
            {
                rentData.realestateData.Image = imageBase64;

                if (latitude != null)
                {
                    rentData.realestateData.Latitude = (decimal)latitude;
                }

                if (longitude != null)
                {
                    rentData.realestateData.Longitude = (decimal)longitude;
                }

                using (var ms = new MemoryStream(Convert.FromBase64String(imageBase64)))
                {
                    System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
                    rentData.realestateData.ImageSize   = ms.Length / 1024;
                    rentData.realestateData.ImageWidth  = img.Width;
                    rentData.realestateData.ImageHeight = img.Height;
                }
            }

            rentData.realestateData.DeviceId = deviceId;

            /* Store Address */
            rentData.realestateData.AddressZip    = offeredRentOutput.zip;
            rentData.realestateData.AddressTown   = offeredRentOutput.town;
            rentData.realestateData.AddressStreet = offeredRentOutput.street;
            rentData.realestateData.Country       = offeredRentOutput.country;
            rentData.realestateData.CatCode       = offeredRentOutput.CategoryCode;


            /* Store all calculated values */
            rentData.realestateData.SurfaceLiving = offeredRentOutput.surfaceContract;
            //priceData.realestateData.LandSurface = offeredRentOutput.landSurface;

            if (offeredRentOutput.qualityMicro != null)
            {
                rentData.realestateData.MicroRating = (decimal)offeredRentOutput.qualityMicro;
            }

            if (offeredRentOutput.roomNb != null)
            {
                rentData.realestateData.RoomNb = (decimal)offeredRentOutput.roomNb;
            }

            rentData.realestateData.Lift           = offeredRentOutput.lift;
            rentData.realestateData.ObjectTypeCode = offeredRentOutput.ObjectTypeCode;
            rentData.realestateData.BuildYear      = offeredRentOutput.buildYear;

            //realEstateAppraise.RealEstateId =  new Guid();
            rentData.realestateRent.AppraisalValue    = offeredRentOutput.appraisalValue;
            rentData.realestateRent.MinAppraisalValue = offeredRentOutput.minappraisalValue;
            rentData.realestateRent.MaxAppraisalValue = offeredRentOutput.maxappraisalValue;

            return(rentData);
        }
示例#7
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);
        }