public void SortCarsByFuelType()
        {
            var data = new List <Car>
            {
                new Car {
                    Model = "Car1", Engine = new Engine {
                        FuelType = "Diesel"
                    }
                },
                new Car {
                    Model = "Car2", Engine = new Engine {
                        FuelType = "Gasoline"
                    }
                },
                new Car {
                    Model = "Car3", Engine = new Engine {
                        FuelType = "Electricity"
                    }
                },
            }.AsQueryable();

            var mockSet = new Mock <DbSet <Car> >();

            mockSet.As <IQueryable <Car> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <Car> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <Car> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <Car> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <CarDealershipContext>();

            mockContext.Setup(m => m.Cars).Returns(mockSet.Object);

            var service    = new CarBusiness(mockContext.Object);
            var SortedCars = service.SortCarsByFuelType();

            Assert.AreEqual("Diesel", SortedCars[0].Engine.FuelType);
            Assert.AreEqual("Electricity", SortedCars[1].Engine.FuelType);
            Assert.AreEqual("Gasoline", SortedCars[2].Engine.FuelType);
        }
        public void SortCarsByFuelEconomyDescending()
        {
            var data = new List <Car>
            {
                new Car {
                    Engine = new Engine {
                        EconomyPerHundredKm = 5m
                    }
                },
                new Car {
                    Engine = new Engine {
                        EconomyPerHundredKm = 6m
                    }
                },
                new Car {
                    Engine = new Engine {
                        EconomyPerHundredKm = 7m
                    }
                }
            }.AsQueryable();

            var mockSet = new Mock <DbSet <Car> >();

            mockSet.As <IQueryable <Car> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <Car> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <Car> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <Car> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <CarDealershipContext>();

            mockContext.Setup(m => m.Cars).Returns(mockSet.Object);

            var service    = new CarBusiness(mockContext.Object);
            var SortedCars = service.SortCarsByFuelEconomyDescending();

            Assert.AreEqual(7m, SortedCars[0].Engine.EconomyPerHundredKm);
            Assert.AreEqual(6m, SortedCars[1].Engine.EconomyPerHundredKm);
            Assert.AreEqual(5m, SortedCars[2].Engine.EconomyPerHundredKm);
        }
        public void SortCarsByPowerDescending()
        {
            var data = new List <Car>
            {
                new Car {
                    Engine = new Engine {
                        Power = 100
                    }
                },
                new Car {
                    Engine = new Engine {
                        Power = 120
                    }
                },
                new Car {
                    Engine = new Engine {
                        Power = 140
                    }
                }
            }.AsQueryable();

            var mockSet = new Mock <DbSet <Car> >();

            mockSet.As <IQueryable <Car> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <Car> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <Car> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <Car> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <CarDealershipContext>();

            mockContext.Setup(m => m.Cars).Returns(mockSet.Object);

            var service    = new CarBusiness(mockContext.Object);
            var SortedCars = service.SortCarsByPowerDescending();

            Assert.AreEqual(140, SortedCars[0].Engine.Power);
            Assert.AreEqual(120, SortedCars[1].Engine.Power);
            Assert.AreEqual(100, SortedCars[2].Engine.Power);
        }
        public void GetCarsWithLowerDisplacement()
        {
            var data = new List <Car>
            {
                new Car {
                    Model = "Car1", Engine = new Engine {
                        Displacement = 1900
                    }
                },
                new Car {
                    Model = "Car2", Engine = new Engine {
                        Displacement = 1800
                    }
                },
                new Car {
                    Model = "Car3", Engine = new Engine {
                        Displacement = 2700
                    }
                },
            }.AsQueryable();

            var mockSet = new Mock <DbSet <Car> >();

            mockSet.As <IQueryable <Car> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <Car> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <Car> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <Car> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <CarDealershipContext>();

            mockContext.Setup(m => m.Cars).Returns(mockSet.Object);

            var service   = new CarBusiness(mockContext.Object);
            var CarsFound = service.GetCarsWithLowerDisplacement(2000);

            Assert.AreEqual(2, CarsFound.Count());
            Assert.AreEqual("Car1", CarsFound[0].Model);
            Assert.AreEqual("Car2", CarsFound[1].Model);
        }
        public void SortCarsByDealershipNameDescending()
        {
            var data = new List <Car>
            {
                new Car {
                    Model = "Car1", CarDealership = new CarDealership {
                        Name = "NameA"
                    }
                },
                new Car {
                    Model = "Car2", CarDealership = new CarDealership {
                        Name = "NameB"
                    }
                },
                new Car {
                    Model = "Car3", CarDealership = new CarDealership {
                        Name = "NameC"
                    }
                },
            }.AsQueryable();

            var mockSet = new Mock <DbSet <Car> >();

            mockSet.As <IQueryable <Car> >().Setup(m => m.Provider).Returns(data.Provider);
            mockSet.As <IQueryable <Car> >().Setup(m => m.Expression).Returns(data.Expression);
            mockSet.As <IQueryable <Car> >().Setup(m => m.ElementType).Returns(data.ElementType);
            mockSet.As <IQueryable <Car> >().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

            var mockContext = new Mock <CarDealershipContext>();

            mockContext.Setup(m => m.Cars).Returns(mockSet.Object);

            var service    = new CarBusiness(mockContext.Object);
            var SortedCars = service.SortCarsByDealershipNameDescending();

            Assert.AreEqual("NameC", SortedCars[0].CarDealership.Name);
            Assert.AreEqual("NameB", SortedCars[1].CarDealership.Name);
            Assert.AreEqual("NameA", SortedCars[2].CarDealership.Name);
        }
示例#6
0
        public MonthBusiness GetBusinessByMonthes(Month start, Month end, SearchSettings settings = null, Region region = null)
        {
            if (settings == null)
            {
                settings = App.SearchSettings;
            }

            var carBusinesses = new List <CarBusiness>();

            var sql = string.Empty;

            if (settings.SelectedDBSearchType == DBSearchType.All)
            {
                var sb = new StringBuilder(1000);
                sb.Append("SELECT DISTINCT ").Append("(");
                //настройки с поиском старых заказов
                var oldSettings = new SearchSettings(settings);
                oldSettings.SelectedDBSearchType = DBSearchType.Old;

                sb.Append(GetBusinessByMonthesQuery(start, end, oldSettings, region));
                //sb.Append(")");
                sb.Append("\r\n UNION \r\n");//.Append("("); //объединяем два запроса

                //настройки с поиском актуальных заказов
                var curentSettings = new SearchSettings(settings);
                curentSettings.SelectedDBSearchType = DBSearchType.Curent;
                sb.Append(GetBusinessByMonthesQuery(start, end, curentSettings, region));
                sb.Append(")");//.Append(" ORDER BY [Document No_]");

                sql = sb.ToString();
            }
            else
            {
                sql = GetBusinessByMonthesQuery(start, end, settings, region);
            }

            try
            {
                using (var con = new SqlConnection(m_connectionString))
                {
                    var com = new SqlCommand(sql);
                    com.Connection = con;

                    con.Open();

                    using (var reader = com.ExecuteReader())
                    {
                        var         curentCar  = string.Empty;
                        var         previosCar = string.Empty;
                        var         buyer      = string.Empty;
                        CarBusiness cb         = null;
                        while (reader.Read())
                        {
                            curentCar = (string)reader["CarName"];

                            var no_ = (string)reader["No_"];

                            cb = carBusinesses.FirstOrDefault(_cb => _cb.ItemNo.Equals(no_));
                            if (cb == null)
                            {
                                previosCar = curentCar;

                                cb         = new CarBusiness();
                                cb.Monthes = Month.GetMonthes(new DateTime(start.Year, start.Index, 1), new DateTime(end.Year, end.Index, 1));
                                cb.ItemNo  = (string)reader["No_"];
                                carBusinesses.Add(cb);

                                var number        = ((string)reader["CarNumber"]).Trim();
                                var lastCharIndex = number.Last(c => char.IsLetter(c)) + 1;

                                if ((lastCharIndex) < number.Length)
                                {
                                    number = number.Substring(lastCharIndex, number.Length - lastCharIndex);
                                }

                                cb.Name = $"{curentCar} ({number})";
                            }

                            buyer = (string)reader["Buyer"];

                            if (cb.Count > 0 && cb.Business.Last().Title.Equals(buyer))
                            {
                                cb.Business.Last().DateEnd = ((DateTime)reader["DateEnd"]);
                            }
                            else
                            {
                                var b = new Leasing();
                                b.DateStart = ((DateTime)reader["DateStart"]);
                                b.DateEnd   = ((DateTime)reader["DateEnd"]);
                                b.Title     = buyer;
                                b.Type      = BusinessType.Leasing;
                                b.Comment   = (string)reader["Comment"];
                                b.Monthes   = Month.GetMonthes(b.DateStart, b.DateEnd);
                                b.Saler     = (string)reader["Saler"];
                                b.Blocked   = (bool)reader["Blocked"];

                                cb.Add(b);
                            }
                        }
                    }
                }
            }
            catch (SqlException sqlEx)
            {
                m_loger.Log("Возникло исключение при запросе выборки из БД", sqlEx,
                            new LogParameter("Запрос", sql));
            }
            catch (Exception ex)
            {
                m_loger.Log("Возникло исключение при запросе выборки из БД", ex);
            }

            var monthBusiness = new MonthBusiness(carBusinesses);

            monthBusiness.Monthes = Month.GetMonthes(new DateTime(start.Year, start.Index, 1), new DateTime(end.Year, end.Index, 1));

            return(monthBusiness);
        }
示例#7
0
        public MonthBusiness GetBusinessByMonth(Month month, SearchSettings settings = null, Region region = null)
        {
            if (settings == null)
            {
                settings = App.SearchSettings;
            }

            var carBusinesses = new List <CarBusiness>();

            #region Old

            /*
             * var sql = $@"SELECT DISTINCT
             *                            l.[Document No_]
             *                          ,h.[Salesperson Code]
             *                          ,h.[Bal_ Account No_]
             *                          ,h.[Sell-to Customer Name] as Buyer
             *                          ,h.[Bill-to Name]
             *                          ,h.[Ship-to Name]
             *                      ,l.[Description] as CarName
             *                      ,l.[Vehicle Reg_ No_] as CarNumber
             *                          ,h.[Venicle Operation Area]
             *                          ,h.[Date Begin] as DateStart
             *                          ,h.[Time Begin]
             *                          ,h.[Date End] as DateEnd
             *                          ,h.[Time End]
             *                          ,h.[Comment Text] as Comment
             *                  FROM [CARLSON_Test_10052018].[dbo].[Carlson$Sales{(invoice ? " Invoice" : "")} Line] l
             *                  INNER JOIN [CARLSON_Test_10052018].[dbo].[Carlson$Sales{(invoice ? " Invoice" : "")} Header] h ON h.[Sell-to Customer No_] = l.[Sell-to Customer No_]
             *                  WHERE l.[Vehicle Reg_ No_] != ''
             *                  AND h.[Date End] > h.[Date Begin]
             *                  ORDER BY l.[Document No_], h.[Date Begin]";
             */
            #endregion

            var sql = string.Empty;

            if (settings.SelectedDBSearchType == DBSearchType.All)
            {
                var sb = new StringBuilder(1000);
                sb.Append("SELECT DISTINCT (");
                //настройки с поиском старых заказов
                var oldSettings = new SearchSettings(settings);
                oldSettings.SelectedDBSearchType = DBSearchType.Old;

                sb.Append(GetBusinessByMonthQuery(month, oldSettings, region));
                sb.Append("\r\n UNION \r\n"); //объединяем два запроса

                //настройки с поиском актуальных заказов
                var curentSettings = new SearchSettings(settings);
                curentSettings.SelectedDBSearchType = DBSearchType.Curent;
                sb.Append(GetBusinessByMonthQuery(month, curentSettings, region));
                sb.Append(")");

                sql = sb.ToString();
            }
            else
            {
                sql = GetBusinessByMonthQuery(month, settings, region);
            }
            //sql = $@"SELECT
            //             i.[No_]
            //            , i.[Description] as CarName
            //            , i.[Vehicle Reg_ No_] as CarNumber
            //            , i.[Blocked]
            //            , l.[Document No_]
            //         ,h.[Salesperson Code]
            //         ,h.[Bal_ Account No_]
            //         ,h.[Sell-to Customer Name] as Buyer
            //         ,h.[Bill-to Name]
            //         ,h.[Ship-to Name]
            //         ,h.[Venicle Operation Area]
            //         ,h.[Date Begin] as DateStart
            //         ,h.[Time Begin]
            //         ,h.[Date End] as DateEnd
            //         ,h.[Time End]
            //         ,h.[Comment Text] as Comment
            //             FROM Carlson$Item i
            //              LEFT JOIN [Carlson$Sales {(settings.SelectedDBSearchType == DBSearchType.Curent ? string.Empty : invoice)}Line] l ON l.No_ = i.No_
            //              LEFT JOIN [Carlson$Sales {(settings.SelectedDBSearchType == DBSearchType.Curent ? string.Empty : invoice)}Header] h ON h.No_ = l.[Document No_]

            //            WHERE 1 = 1
            //                {(settings.IncludeBlocked ? string.Empty : "AND i.Blocked = 0")}
            //              AND i.IsService = 0
            //              AND i.IsFranchise = 0
            //                AND h.[Date Begin] IS NOT NULL
            //                {(region == null || string.IsNullOrWhiteSpace(region.DBKey) ? "" : "AND i.[Responsibility Center] = '" + region.DBKey + "'")}
            //                AND ((h.[Date Begin] BETWEEN '{month.GetSqlDate(1)}' AND '{month.Next().GetSqlDate(1)}') OR (h.[Date End] BETWEEN '{month.GetSqlDate(1)}' AND '{month.Next().GetSqlDate(1)}'))

            //            ORDER BY l.[Document No_]";

            try
            {
                using (var con = new SqlConnection(m_connectionString))
                {
                    var com = new SqlCommand(sql);
                    com.Connection = con;

                    con.Open();

                    using (var reader = com.ExecuteReader())
                    {
                        var         curentCar  = string.Empty;
                        var         previosCar = string.Empty;
                        var         buyer      = string.Empty;
                        CarBusiness cb         = null;
                        while (reader.Read())
                        {
                            curentCar = (string)reader["CarName"];

                            var no_ = (string)reader["No_"];

                            cb = carBusinesses.FirstOrDefault(_cb => _cb.ItemNo.Equals(no_));
                            if (cb == null)
                            {
                                previosCar = curentCar;

                                cb        = new CarBusiness();
                                cb.Month  = month;
                                cb.ItemNo = (string)reader["No_"];
                                carBusinesses.Add(cb);

                                var number        = ((string)reader["CarNumber"]).Trim();
                                var lastCharIndex = number.Last(c => char.IsLetter(c)) + 1;

                                if ((lastCharIndex) < number.Length)
                                {
                                    number = number.Substring(lastCharIndex, number.Length - lastCharIndex);
                                }

                                cb.Name = $"{curentCar} ({number})";
                            }

                            buyer = (string)reader["Buyer"];

                            if (cb.Count > 0 && cb.Business.Last().Title.Equals(buyer))
                            {
                                cb.Business.Last().DateEnd = ((DateTime)reader["DateEnd"]);
                            }
                            else
                            {
                                var b = new Leasing();
                                b.DateStart    = ((DateTime)reader["DateStart"]);
                                b.DateEnd      = ((DateTime)reader["DateEnd"]);
                                b.Title        = buyer;
                                b.Type         = BusinessType.Leasing;
                                b.Comment      = (string)reader["Comment"];
                                b.CurrentMonth = month;

                                cb.Add(b);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                m_loger.Log("Возникло исключение при запросе выборки из БД", ex);
            }

            var monthBusiness = new MonthBusiness(carBusinesses);
            monthBusiness.Month = month;

            return(monthBusiness);
        }
示例#8
0
 public void Init()
 {
     carBusiness = new CarBusiness();
     car         = new Car();
 }