public static void TestFixtureSetup(TestContext context)
        {
            con = new NpgsqlConnection(cs);
            con.Open();

            regionsRepository = new RegionsRepository(con);
        }
Exemple #2
0
        public static void TestFixtureSetup(TestContext context)
        {
            con = new NpgsqlConnection(cs);
            con.Open();

            regionsRepository       = new RegionsRepository(con);
            countriesRepository     = new CountriesRepository(con);
            manufacturersRepository = new ManufacturersRepository(con);
            manufacturerValidation  = new ManufacturerValidation(con);
            carsRepository          = new CarsRepository(con);

            regionsRepository.Save(Region1);
            regionsRepository.Save(Region2);
            regionsRepository.Save(Region3);
            regionsRepository.Flush();

            countriesRepository.Save(Country1);
            countriesRepository.Save(Country2);
            countriesRepository.Save(Country3);
            countriesRepository.Flush();

            manufacturersRepository.Save(Manufacturer1);
            manufacturersRepository.Save(Manufacturer2);
            manufacturersRepository.Save(Manufacturer3);
            manufacturersRepository.Flush();

            carsRepository.SaveAndFlush(Car2);
        }
        public ActionResult AddressTypePartial(AddressTypeViewModel model)
        {
            if (ModelState.IsValid && !String.IsNullOrWhiteSpace(model.CustomerID))
            {
                switch (model.SelectedAddressType)
                {
                case "Email":
                    var emailAddressModel = new EmailAddressViewModel()
                    {
                        CustomerID = model.CustomerID
                    };
                    return(PartialView("CreateEmailAddressPartial", emailAddressModel));

                case "Postal":
                    var postalAddressModel = new PostalAddressEditViewModel()
                    {
                        CustomerID = model.CustomerID
                    };
                    var countriesRepo = new CountriesRepository();
                    postalAddressModel.Countries = countriesRepo.GetCountries();
                    var regionsRepo = new RegionsRepository();
                    postalAddressModel.Regions = regionsRepo.GetRegions();
                    return(PartialView("CreatePostalAddressPartial", postalAddressModel));

                default:
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
            }
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }
Exemple #4
0
        public PostalAddressEditViewModel SavePostalAddress(PostalAddressEditViewModel model)
        {
            if (model != null && Guid.TryParse(model.CustomerID, out Guid customerid))
            {
                using (var context = new ApplicationDbContext())
                {
                    var postalAddress = new PostalAddress()
                    {
                        CustomerID     = customerid,
                        StreetAddress1 = model.StreetAddress1?.Trim(),
                        StreetAddress2 = model.StreetAddress2?.Trim(),
                        City           = model.City?.Trim(),
                        PostalCode     = model.PostalCode,
                        RegionCode     = model.SelectedRegionCode,
                        Iso3           = model.SelectedCountryIso3
                    };
                    postalAddress.Region  = context.Regions.Find(postalAddress.RegionCode);
                    postalAddress.Country = context.Countries.Find(postalAddress.Iso3);

                    context.PostalAddresses.Add(postalAddress);
                    context.SaveChanges();

                    var countriesRepo = new CountriesRepository();
                    model.Countries = countriesRepo.GetCountries();
                    var regionsRepo = new RegionsRepository();
                    model.Regions = regionsRepo.GetRegions(model.SelectedCountryIso3);
                    return(model);
                }
            }
            return(null);
        }
Exemple #5
0
        public PostalAddressViewModel GetPostalAddress(Guid customerid, int postaladdressid)
        {
            if (customerid != Guid.Empty)
            {
                using (var context = new ApplicationDbContext())
                {
                    var postalAddress = context.PostalAddresses.AsNoTracking()
                                        .Where(x => x.CustomerID == customerid && x.PostalAddressID == postaladdressid)
                                        .SingleOrDefault();

                    if (postalAddress != null)
                    {
                        var postalAddressVm = new PostalAddressViewModel()
                        {
                            CustomerID     = postalAddress.CustomerID.ToString("D"),
                            StreetAddress1 = postalAddress.StreetAddress1?.Trim(),
                            StreetAddress2 = postalAddress.StreetAddress2?.Trim(),
                            City           = postalAddress.City?.Trim()
                        };
                        var countriesRepo = new CountriesRepository();
                        postalAddressVm.CountryNameEnglish = countriesRepo.GetCountryNameEnglish(postalAddress.Iso3);
                        var regionsRepo = new RegionsRepository();
                        postalAddressVm.RegionNameEnglish = regionsRepo.GetRegionNameEnglish(postalAddress.RegionCode);

                        return(postalAddressVm);
                    }
                }
            }
            return(null);
        }
        public static void TestFixtureSetup(TestContext context)
        {
            con = new NpgsqlConnection(cs);
            con.Open();

            regionsRepository       = new RegionsRepository(con);
            countriesRepository     = new CountriesRepository(con);
            manufacturersRepository = new ManufacturersRepository(con);
            manufacturersService    = new ManufacturersService(con);

            regionsRepository.Save(Region1);
            regionsRepository.Save(Region2);
            regionsRepository.Save(Region3);
            regionsRepository.Flush();

            countriesRepository.Save(Country1);
            countriesRepository.Save(Country2);
            countriesRepository.Save(Country3);
            countriesRepository.Save(Country4);
            countriesRepository.Save(Country5);
            countriesRepository.Flush();

            manufacturersRepository.Save(Manufacturer1);
            manufacturersRepository.Save(Manufacturer2);
            manufacturersRepository.Save(Manufacturer3);
            manufacturersRepository.Save(Manufacturer4);
            manufacturersRepository.Save(Manufacturer5);
            manufacturersRepository.Save(Manufacturer6);
            manufacturersRepository.Save(Manufacturer7);
            manufacturersRepository.Save(Manufacturer8);
            manufacturersRepository.Save(Manufacturer9);
            manufacturersRepository.Flush();
        }
        public void TestCityGetter()
        {
            // Arrange
            var cities = new List <City>
            {
                new City {
                    RegionId = 1
                },
                new City {
                    RegionId = 2
                },
                new City {
                    RegionId = 1
                },
                new City {
                    RegionId = 3
                }
            };
            var dbSet   = cities.AsQueryable().BuildMockDbSet();
            var context = new Mock <hNextDbContext>(new DbContextOptions <hNextDbContext>());

            context.Setup(c => c.Cities).Returns(dbSet.Object);
            RegionsRepository repository = new RegionsRepository(context.Object);

            //Act
            var result = repository.GetCities(1).Result;

            //Assert
            Assert.IsInstanceOfType(result, typeof(IEnumerable <City>));
            Assert.AreEqual(result.Count(), 2);
            Assert.IsTrue(result.All(c => c.RegionId == 1));
        }
Exemple #8
0
        public CustomerEditViewModel GetCustomer(Guid customerid)
        {
            if (customerid != Guid.Empty)
            {
                using (var context = new ApplicationDbContext())
                {
                    var customer = context.Customers.AsNoTracking()
                                   .Where(x => x.CustomerID == customerid)
                                   .SingleOrDefault();
                    if (customer != null)
                    {
                        var customerEditVm = new CustomerEditViewModel()
                        {
                            CustomerID          = customer.CustomerID.ToString("D"),
                            CustomerName        = customer.CustomerName.Trim(),
                            SelectedCountryIso3 = customer.CountryIso3,
                            SelectedRegionCode  = customer.RegionCode
                        };
                        var countriesRepo = new CountriesRepository();
                        customerEditVm.Countries = countriesRepo.GetCountries();
                        var regionsRepo = new RegionsRepository();
                        customerEditVm.Regions = regionsRepo.GetRegions(customer.CountryIso3);

                        return(customerEditVm);
                    }
                }
            }
            return(null);
        }
Exemple #9
0
        public PostalAddressListViewModel GetPostalAddressList(Guid customerid)
        {
            if (customerid != Guid.Empty)
            {
                using (var context = new ApplicationDbContext())
                {
                    var postalAddresses = context.PostalAddresses.AsNoTracking()
                                          .Where(x => x.CustomerID == customerid)
                                          .OrderBy(x => x.PostalAddressID);

                    if (postalAddresses != null)
                    {
                        var postalAddressListVm = new PostalAddressListViewModel();
                        foreach (var address in postalAddresses)
                        {
                            var postalAddressVm = new PostalAddressViewModel()
                            {
                                CustomerID      = address.CustomerID.ToString("D"),
                                PostalAddressID = address.PostalAddressID,
                                StreetAddress1  = address.StreetAddress1,
                                StreetAddress2  = address.StreetAddress2,
                                City            = address.City
                            };
                            var regionsRepo = new RegionsRepository();
                            postalAddressVm.RegionNameEnglish = regionsRepo.GetRegionNameEnglish(address.RegionCode);
                            var countryRepo = new CountriesRepository();
                            postalAddressVm.CountryNameEnglish = countryRepo.GetCountryNameEnglish(address.Iso3);
                            postalAddressListVm.PostalAddresses.Add(postalAddressVm);
                        }
                        return(postalAddressListVm);
                    }
                }
            }
            return(null);
        }
        private static RegionsRepository GetRepository()
        {
            var contextMock = new Mock <Entity.GeographyDatabaseContext>();

            //Act
            var repository = new RegionsRepository(contextMock.Object);

            return(repository);
        }
        private static RegionsRepository GetRepository()
        {
            var contextMock = new Mock <TravelDbContext>();

            //Act
            var repository = new RegionsRepository(contextMock.Object);

            return(repository);
        }
        public static void TestFixtureSetup(TestContext context)
        {
            con = new NpgsqlConnection(cs);
            con.Open();

            regionsRepository       = new RegionsRepository(con);
            countriesRepository     = new CountriesRepository(con);
            manufacturersRepository = new ManufacturersRepository(con);
            carsRepository          = new CarsRepository(con);
            carValidation           = new CarValidation(con);
            ownerCarsRepository     = new OwnerCarsRepository(con);
            ownersRepository        = new OwnersRepository(con);

            regionsRepository.Save(Region1);
            regionsRepository.Save(Region2);
            regionsRepository.Save(Region3);
            regionsRepository.Flush();

            countriesRepository.Save(Country1);
            countriesRepository.Save(Country2);
            countriesRepository.Save(Country3);
            countriesRepository.Save(Country4);
            countriesRepository.Save(Country5);
            countriesRepository.Flush();

            manufacturersRepository.Save(Manufacturer1);
            manufacturersRepository.Save(Manufacturer2);
            manufacturersRepository.Save(Manufacturer3);
            manufacturersRepository.Save(Manufacturer4);
            manufacturersRepository.Save(Manufacturer5);
            manufacturersRepository.Save(Manufacturer6);
            manufacturersRepository.Save(Manufacturer7);
            manufacturersRepository.Save(Manufacturer8);
            manufacturersRepository.Save(Manufacturer9);
            manufacturersRepository.Flush();

            carsRepository.Save(Car1);
            carsRepository.Save(Car2);
            carsRepository.Save(Car3);
            carsRepository.Save(Car4);
            carsRepository.Save(Car5);
            carsRepository.Save(Car6);
            carsRepository.Save(Car7);
            carsRepository.Save(Car8);
            carsRepository.Save(Car9);
            carsRepository.Save(Car10);
            carsRepository.Save(Car11);
            carsRepository.Save(Car12);
            carsRepository.Save(Car13);
            carsRepository.Save(Car14);
            carsRepository.Save(Car15);
            carsRepository.Flush();

            ownersRepository.SaveAndFlush(Owner2);

            ownerCarsRepository.SaveAndFlush(OwnerCar2);
        }
Exemple #13
0
        public ActionResult GetRegions(string iso3)
        {
            if (!string.IsNullOrWhiteSpace(iso3) && iso3.Length == 3)
            {
                var repo = new RegionsRepository();

                IEnumerable <SelectListItem> regions = repo.GetRegions(iso3);
                return(Json(regions, JsonRequestBehavior.AllowGet));
            }
            return(null);
        }
        public void RegionsSelectListHasSpecificFirstEntry()
        {
            // Arrange
            var regionsRepo = new RegionsRepository();

            // Act
            var regionsList = regionsRepo.GetRegionsSelectList();

            // Assert
            Assert.AreEqual("--- select region ---", regionsList.First().Text);
        }
        public void RegionsSelectListHas51Entries()
        {
            // Arrange
            var regionsRepo = new RegionsRepository();

            // Act
            var regionsList = regionsRepo.GetRegionsSelectList();

            // Assert
            Assert.AreEqual(51, regionsList.Count());
        }
        public void RegionsListHas50States()
        {
            // Arrange
            var regionsRepo = new RegionsRepository();

            // Act
            var regionsList = regionsRepo.GetRegionsList();

            // Assert
            Assert.AreEqual(50, regionsList.Count);
        }
        public List <SelectListItem> GetAllRegions()
        {
            IRegionsRepository    regionsRepo = new RegionsRepository();
            List <SelectListItem> regionList  = new List <SelectListItem>();

            regionList = regionsRepo.GetAll().Where(x => !string.IsNullOrEmpty(x.RegionName)).Select(x => new SelectListItem()
            {
                Text = x.RegionName, Value = x.ID.ToString()
            }
                                                                                                     ).ToList();
            return(regionList);
        }
Exemple #18
0
        public static void TestFixtureSetup(TestContext context)
        {
            con = new NpgsqlConnection(cs);
            con.Open();

            regionsService    = new RegionsService(con);
            regionsRepository = new RegionsRepository(con);

            regionsRepository.Save(Region1);
            regionsRepository.Save(Region2);
            regionsRepository.Save(Region3);
            regionsRepository.Flush();
        }
Exemple #19
0
        public CustomerEditViewModel CreateCustomer()
        {
            var cRepo    = new CountriesRepository();
            var rRepo    = new RegionsRepository();
            var customer = new CustomerEditViewModel()
            {
                CustomerID = Guid.NewGuid().ToString(),
                Countries  = cRepo.GetCountries(),
                Regions    = rRepo.GetRegions()
            };

            return(customer);
        }
 public TerritoryRegionCountryServices()
 {
     if (territoriesRepository == null)
     {
         territoriesRepository = new TerritoriesRepository();
     }
     if (regionsRepository == null)
     {
         regionsRepository = new RegionsRepository();
     }
     if (countriesRepository == null)
     {
         countriesRepository = new CountriesRepository();
     }
 }
Exemple #21
0
        public void OnPost_ReturnsPageResultAndWeatherInfo_WhenDataIsValid()
        {
            // Arrange
            const int  zipCode         = 95661;
            const bool fromCache       = false;
            var        finalTestData   = GenerateTestJSONFinalData(fromCache, zipCode);
            var        mockRegionsRepo = new Mock <IRegionsRepository>();
            var        mockWeatherRepo = new Mock <IWeatherRepository>();
            var        expectedRegions = new RegionsRepository().GetRegionsSelectList();

            mockRegionsRepo.Setup(x => x.GetRegionsSelectList()).Returns(expectedRegions);
            mockWeatherRepo.Setup(x => x.GetWeatherData(zipCode)).Returns(finalTestData);
            var address = new Address()
            {
                ZipCode = "95661"
            };
            var httpContext           = new DefaultHttpContext();
            var modelState            = new ModelStateDictionary();
            var actionContext         = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState);
            var modelMetadataProvider = new EmptyModelMetadataProvider();
            var viewData    = new ViewDataDictionary(modelMetadataProvider, modelState);
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());
            var pageContext = new PageContext(actionContext)
            {
                ViewData = viewData
            };
            var pageModel = new IndexModel(mockRegionsRepo.Object, mockWeatherRepo.Object)
            {
                PageContext = pageContext,
                TempData    = tempData,
                Url         = new UrlHelper(actionContext),
                Address     = address
            };

            // Act
            var result = pageModel.OnPost();

            // Assert
            var pageResult = result as PageResult;

            Assert.IsNotNull(pageResult, "OnPost returns Null PageResult when Data is valid");
            Assert.IsNotNull(pageModel.WeatherInfo, "OnPost returns Null WeatherInfo when Data is valid");
            Assert.AreEqual(zipCode.ToString(), pageModel.WeatherInfo.ZipCode, "ZipCode in WeatherInfo is Incorrect!");
            Assert.AreEqual(2, pageModel.WeatherInfo.ForcastInfo.Count, "ForecastInfo.Count in WeatherInfo is Incorrect!");
            Assert.IsFalse(pageModel.WeatherInfo.FromCache, "FromCache in WeatherInfo is Incorrect!");
        }
Exemple #22
0
        public IActionResult OnPostRegions()
        {
            MemoryStream stream = new MemoryStream();

            Request.Body.CopyToAsync(stream);
            stream.Position           = 0;
            using StreamReader reader = new StreamReader(stream);
            string requestBody = reader.ReadToEnd();

            if (requestBody.Length > 0)
            {
                var repo = new RegionsRepository(_context);

                IEnumerable <SelectListItem> regions = repo.GetRegions(requestBody);
                return(new JsonResult(regions));
            }
            return(null);
        }
Exemple #23
0
        public void OnPost_ReturnsPageResult_WhenZipCodeIsInvalid()
        {
            // Arrange
            var mockRegionsRepo = new Mock <IRegionsRepository>();
            var mockWeatherRepo = new Mock <IWeatherRepository>();
            var expectedRegions = new RegionsRepository().GetRegionsSelectList();

            mockRegionsRepo.Setup(x => x.GetRegionsSelectList()).Returns(expectedRegions);
            var address = new Address()
            {
                ZipCode = "1234A"
            };
            var httpContext           = new DefaultHttpContext();
            var modelState            = new ModelStateDictionary();
            var actionContext         = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState);
            var modelMetadataProvider = new EmptyModelMetadataProvider();
            var viewData    = new ViewDataDictionary(modelMetadataProvider, modelState);
            var tempData    = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>());
            var pageContext = new PageContext(actionContext)
            {
                ViewData = viewData
            };
            var pageModel = new IndexModel(mockRegionsRepo.Object, mockWeatherRepo.Object)
            {
                PageContext = pageContext,
                TempData    = tempData,
                Url         = new UrlHelper(actionContext),
                Address     = address
            };

            // Act
            var result = pageModel.OnPost();

            // Assert
            var pageResult = result as PageResult;

            Assert.IsNotNull(pageResult, "OnPost returns Null PageResult when ZipCode is Invalid");
            Assert.IsNull(pageModel.WeatherInfo, "OnPost returns NON-Null WeatherInfo when ZipCode is Invalid");
        }
Exemple #24
0
        public void OnGet_PopulatesThePageModel_WithAListOfRegions()
        {
            // Arrange
            var mockRegionsRepo = new Mock <IRegionsRepository>();
            var mockWeatherRepo = new Mock <IWeatherRepository>();
            var expectedRegions = new RegionsRepository().GetRegionsSelectList();

            mockRegionsRepo.Setup(x => x.GetRegionsSelectList()).Returns(expectedRegions);
            var pageModel = new IndexModel(mockRegionsRepo.Object, mockWeatherRepo.Object);

            // Act
            pageModel.OnGet();

            // Assert
            var actualRegions = pageModel.Regions;

            Assert.IsNotNull(actualRegions, "Regions List in OnGet is Null!");
            Assert.AreEqual(51, actualRegions.Count(), "Regions List Count is Incorrect!");
            CollectionAssert.AreEqual(
                expectedRegions.OrderBy(r => r.Value).Select(r => r.Text).ToList(),
                actualRegions.OrderBy(r => r.Value).Select(r => r.Text).ToList(),
                "Regions List is Not a match!");
        }
 /// <summary>Initializes a new instance of the <see cref="CountryValidation"/> class.</summary>
 /// <param name="npgsqlConnection">The NPGSQL connection.</param>
 public CountryValidation(NpgsqlConnection npgsqlConnection) : base(npgsqlConnection)
 {
     countriesRespository    = new CountriesRepository(npgsqlConnection);
     regionsRepository       = new RegionsRepository(npgsqlConnection);
     manufacturersRepository = new ManufacturersRepository(npgsqlConnection);
 }
Exemple #26
0
 public RegionsBusiness(IUnitOfWork _unitOfWork)
 {
     unitOfWork = _unitOfWork;
     repository = new RegionsRepository(unitOfWork);
 }
Exemple #27
0
        public static void InitDDBB()
        {
            OwnLogger.AllLogs.Clear();
            new EmulatedConfig().Clean();

            Mallorca.AddHotel(IdHotelMallorca01);
            Mallorca.AddHotel(IdHotelMallorca02);
            Mallorca.AddHotel(IdHotelMallorca03);
            Mallorca.AddHotel(IdHotelMallorca04);
            Mallorca.AddHotel(IdHotelMallorca05);
            Mallorca.AddHotel(IdHotelMallorca06);
            Mallorca.AddHotel(IdHotelMallorca07);
            Mallorca.AddHotel(IdHotelMallorca08);
            Mallorca.AddHotel(IdHotelMallorca09);
            Mallorca.AddHotel(IdHotelMallorca10);
            Ibiza.AddHotel(IdHotelIbiza01);
            Ibiza.AddHotel(IdHotelIbiza02);
            Ibiza.AddHotel(IdHotelIbiza03);
            Ibiza.AddHotel(IdHotelIbiza04);
            Ibiza.AddHotel(IdHotelIbiza05);
            Ibiza.AddHotel(IdHotelIbiza06);
            Ibiza.AddHotel(IdHotelIbiza07);
            Ibiza.AddHotel(IdHotelIbiza08);
            Ibiza.AddHotel(IdHotelIbiza09);
            Ibiza.AddHotel(IdHotelIbiza10);
            Formentera.AddHotel(IdHotelFormentera01);
            Formentera.AddHotel(IdHotelFormentera02);
            Formentera.AddHotel(IdHotelFormentera03);
            Formentera.AddHotel(IdHotelFormentera04);
            Formentera.AddHotel(IdHotelFormentera05);
            Formentera.AddHotel(IdHotelFormentera06);
            Formentera.AddHotel(IdHotelFormentera07);
            Formentera.AddHotel(IdHotelFormentera08);
            Formentera.AddHotel(IdHotelFormentera09);
            Formentera.AddHotel(IdHotelFormentera10);

            var hotels = new HotelsRepository();

            hotels.Reset();
            hotels.Set(HotelMallorca01);
            hotels.Set(HotelMallorca02);
            hotels.Set(HotelMallorca03);
            hotels.Set(HotelMallorca04);
            hotels.Set(HotelMallorca05);
            hotels.Set(HotelMallorca06);
            hotels.Set(HotelMallorca07);
            hotels.Set(HotelMallorca08);
            hotels.Set(HotelMallorca09);
            hotels.Set(HotelMallorca10);
            hotels.Set(HotelIbiza01);
            hotels.Set(HotelIbiza02);
            hotels.Set(HotelIbiza03);
            hotels.Set(HotelIbiza04);
            hotels.Set(HotelIbiza05);
            hotels.Set(HotelIbiza06);
            hotels.Set(HotelIbiza07);
            hotels.Set(HotelIbiza08);
            hotels.Set(HotelIbiza09);
            hotels.Set(HotelIbiza10);
            hotels.Set(HotelFormentera01);
            hotels.Set(HotelFormentera02);
            hotels.Set(HotelFormentera03);
            hotels.Set(HotelFormentera04);
            hotels.Set(HotelFormentera05);
            hotels.Set(HotelFormentera06);
            hotels.Set(HotelFormentera07);
            hotels.Set(HotelFormentera08);
            hotels.Set(HotelFormentera09);
            hotels.Set(HotelFormentera10);

            var regions = new RegionsRepository();

            regions.Reset();
            regions.Set(Mallorca);
            regions.Set(Ibiza);
            regions.Set(Formentera);

            var types = new HotelTypesRepository();

            types.Reset();
            types.Set(TypeOnlyAdult);
            types.Set(TypeHotelSpa);
            types.Set(TypePremium);

            var clients = new ClientsRepository();

            clients.Reset();
            clients.Set(new Client {
                Id = IdClient01, Email = "*****@*****.**", Name = "Client 01", Telephone = "666666601"
            });
            clients.Get(IdClient01).AddObserver(Mallorca);
            clients.Get(IdClient01).AddObserver(Formentera);
            clients.Get(IdClient01).Preference_A = "Some Value";
            clients.Set(new Client {
                Id = IdClient02, Email = "*****@*****.**", Name = "Client 02", Telephone = "666666602"
            });
            clients.Get(IdClient02).AddObserver(Mallorca);
            clients.Get(IdClient02).AddObserver(Ibiza);
            clients.Get(IdClient02).Preference_A = "Some Value";
            clients.Set(new Client {
                Id = IdClient03, Email = "*****@*****.**", Name = "Client 03", Telephone = "666666603"
            });
            clients.Get(IdClient03).AddObserver(Ibiza);
            clients.Get(IdClient03).AddObserver(Formentera);
            clients.Get(IdClient03).Preference_A = "Some Value";
            clients.Set(new Client {
                Id = IdClient04, Email = "*****@*****.**", Name = "Client 04", Telephone = "666666604"
            });
            clients.Get(IdClient04).AddObserver(Formentera);
            clients.Get(IdClient04).Preference_A = "Some Value";
            clients.Set(new Client {
                Id = IdClient05, Email = "*****@*****.**", Name = "Client 05", Telephone = "666666605"
            });
            clients.Get(IdClient05).AddObserver(Ibiza);
            clients.Get(IdClient05).Preference_A = "Some Value";

            Global.Reset();

            Global.Register <IConfig, EmulatedConfig>();

            Registrator.Register();

            Global.Prepare();
        }
    private static void ImportSalesRegion(int tromId, int tpsId, int tprId, int eromId, int pss1Id, int psr1Id, int erom2Id, int pss2Id, int psr2Id,
                                         RegionsRepository RRepo, int regionId)
    {
        RRepo.AddSalesmenRegion(tprId, regionId);
        RRepo.AddSalesmenRegion(tpsId, regionId);
        RRepo.AddSalesmenRegion(tromId, regionId);

        RRepo.AddSalesmenRegion(psr1Id, regionId);
        RRepo.AddSalesmenRegion(pss1Id, regionId);
        RRepo.AddSalesmenRegion(eromId, regionId);

        RRepo.AddSalesmenRegion(psr2Id, regionId);
        RRepo.AddSalesmenRegion(pss2Id, regionId);
        RRepo.AddSalesmenRegion(erom2Id, regionId);
    }
    protected void btnImport_Click(object sender, EventArgs e)
    {
        btnImport.Enabled = false;
        fuImport.Enabled = false;
        btnImport.Text = "Processing...";
        if (!fuImport.HasFile)
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Chọn file để nhập');", true);
        else
        {
            string ext = fuImport.FileName.Substring(fuImport.FileName.LastIndexOf('.') + 1).ToLower();
            if (!ext.Equals("xls") && !ext.Equals("xlsx"))
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Định dạng file nhập ko đúng');", true);
            else
            {
                string newFileName = Guid.NewGuid().ToString("N") + "." + ext;
                string pathToFile = Server.MapPath("~\\Import") + "\\" + newFileName;
                fuImport.SaveAs(pathToFile);
                try
                {
                    ObjLogin adm = (ObjLogin)Session["objLogin"];

                    int smsquota = int.Parse(ConfigurationManager.AppSettings["SMSQuota"]);
                    double expiredDateConfig = Convert.ToDouble(ConfigurationManager.AppSettings["ExpiredDate"]);
                    DateTime expiredDate = Convert.ToDateTime(DateTime.Now.AddDays(expiredDateConfig));

                    var GRepo = new GroupsRepository();
                    var RegionRepo = new RegionsRepository();
                    var AreaRepo = new AreasRepository();
                    var LocalRepo = new LocalsRepository();
                    var ChRepo = new ChannelRepository();
                    var SaleRepo = new SalesmanRepository();
                    var CLogRepo = new CustomersLogRepository();
                    var CRepo = new CustomersRepository();
                    var CTRepo = new CustomerTypeRepository();
                    var DisRepo = new DistrictsRepository();
                    var proviceRepo = new ProvincesRepository();
                    var sectionRepo = new SectionRepository();

                    SpreadsheetInfo.SetLicense("E24D-D739-F65A-4E00");
                    ExcelFile ef = new ExcelFile();
                    ef.LoadXls(pathToFile);
                    ExcelWorksheet ws = ef.Worksheets[0];

                    for (int i = 2; i < ws.Rows.Count; i++)
                    {
                        try
                        {
                            vwMasterList vmMasterItem = new vwMasterList(ws.Rows[i].Cells[4].Value.ToString(),
                                                                ws.Rows[i].Cells[5].Value.ToString(),
                                                                ws.Rows[i].Cells[6].Value.ToString(),
                                                                ws.Rows[i].Cells[7].Value.ToString(),
                                                                ws.Rows[i].Cells[8].Value.ToString(),
                                                                ws.Rows[i].Cells[9].Value.ToString(),
                                                                ws.Rows[i].Cells[10].Value.ToString(),
                                                                ws.Rows[i].Cells[11].Value.ToString(),
                                                                ws.Rows[i].Cells[12].Value.ToString(),
                                                                ws.Rows[i].Cells[13].Value.ToString(),
                                                                ws.Rows[i].Cells[14].Value.ToString(),
                                                                ws.Rows[i].Cells[15].Value.ToString(),
                                                                ws.Rows[i].Cells[17].Value.ToString(),
                                                                ws.Rows[i].Cells[18].Value.ToString(),
                                                                ws.Rows[i].Cells[19].Value.ToString(),
                                                                ws.Rows[i].Cells[20].Value.ToString(),
                                                                ws.Rows[i].Cells[22].Value.ToString(),
                                                                ws.Rows[i].Cells[23].Value.ToString(),
                                                                ws.Rows[i].Cells[24].Value.ToString());

                            // Add Group - Region - Area - Local
                            var groupId = GRepo.Import("", vmMasterItem.Group, "");
                            var regionId = RegionRepo.Import("", vmMasterItem.Region, "", groupId);
                            var areaId = AreaRepo.Import("", vmMasterItem.Area, "", regionId);
                            var localId = LocalRepo.Import("", vmMasterItem.Local, "", areaId);

                            // Add section
                            var sectionId = sectionRepo.Import(vmMasterItem.Area);

                            // Add Province
                            var provinceId = proviceRepo.Import(vmMasterItem.Local, sectionId);

                            // Add District
                            var districtId = DisRepo.Import(vmMasterItem.Local, provinceId);

                            // Add Channel
                            ChRepo.Insert("", vmMasterItem.Channel1, 0);
                            ChRepo.Insert("", vmMasterItem.Channel2, ChRepo.GetChannelIdByName(vmMasterItem.Channel1));
                            ChRepo.Insert("", vmMasterItem.Channel3, ChRepo.GetChannelIdByName(vmMasterItem.Channel2));

                            // Add Customer Type
                            CTRepo.Add("", vmMasterItem.Channel3);

                            // Add Salesmen
                            var tromId = SaleRepo.ImportSalesmen("", vmMasterItem.TROM, "", (int)SalesmenRole.TROM, smsquota, expiredDate, -1);
                            var tpsId = SaleRepo.ImportSalesmen("", vmMasterItem.TPS, "", (int)SalesmenRole.TPS, smsquota, expiredDate, tromId);
                            var tprId = SaleRepo.ImportSalesmen("", vmMasterItem.TPR, "", (int)SalesmenRole.TPR, smsquota, expiredDate, tpsId);

                            var eromId = SaleRepo.ImportSalesmen("", vmMasterItem.EROM, "", (int)SalesmenRole.EROM, smsquota, expiredDate, -1);
                            var pss1Id = SaleRepo.ImportSalesmen("", vmMasterItem.PSS1, "", (int)SalesmenRole.PSS1, smsquota, expiredDate, eromId);
                            var psr1Id = SaleRepo.ImportSalesmen("", vmMasterItem.PSR1, "", (int)SalesmenRole.PSR1, smsquota, expiredDate, pss1Id);

                            var erom2Id = SaleRepo.ImportSalesmen("", vmMasterItem.EROM2, "", (int)SalesmenRole.EROM2, smsquota, expiredDate, -1);
                            var pss2Id = SaleRepo.ImportSalesmen("", vmMasterItem.PSS2, "", (int)SalesmenRole.PSS2, smsquota, expiredDate, erom2Id);
                            var psr2Id = SaleRepo.ImportSalesmen("", vmMasterItem.PSR2, "", (int)SalesmenRole.PSR2, smsquota, expiredDate, pss2Id);

                            // Add Salesgroup - salesregion - salesarea - saleslocal
                            ImportSalesGroup(tromId, tpsId, tprId, eromId, pss1Id, psr1Id, erom2Id, pss2Id, psr2Id, GRepo, groupId);
                            ImportSalesRegion(tromId, tpsId, tprId, eromId, pss1Id, psr1Id, erom2Id, pss2Id, psr2Id, RegionRepo, regionId);
                            ImportSalesArea(tromId, tpsId, tprId, eromId, pss1Id, psr1Id, erom2Id, pss2Id, psr2Id, AreaRepo, areaId);
                            ImportSalesLocal(tromId, tpsId, tprId, eromId, pss1Id, psr1Id, erom2Id, pss2Id, psr2Id, LocalRepo, localId);

                            // Add Customer - Customer Log
                            int CustomerId = CRepo.InsertCustomer(vmMasterItem.CustomerCode, vmMasterItem.Customername, vmMasterItem.Customeraddress, "", "", "", "",
                                CTRepo.GetCustomerTypeIdByName(vmMasterItem.Channel3),
                                ChRepo.GetChannelIdByName(vmMasterItem.Channel3), districtId, localId, DateTime.Now, DateTime.Now,
                                true, false);
                            CLogRepo.InsertCustomer(vmMasterItem.CustomerCode, vmMasterItem.Customername, vmMasterItem.Customeraddress, "", "", "", "",
                                CTRepo.GetCustomerTypeIdByName(vmMasterItem.Channel3),
                                ChRepo.GetChannelIdByName(vmMasterItem.Channel3), districtId, localId, DateTime.Now, DateTime.Now,
                                true, CustomerId, false, 0, adm.Id, string.Empty);

                            lstCustomer.Add(vmMasterItem);
                        }
                        catch (Exception ex)
                        {
                            // write log here => TBD
                        }
                    }

                    CustomerList.DataSource = lstCustomer;
                    CustomerList.DataBind();
                }
                catch (Exception ex)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('" + ex.Message + "');", true);
                }
                finally
                {

                }

            }
        }
        btnImport.Enabled = true;
        fuImport.Enabled = true;
        btnImport.Text = "Import";
    }