Esempio n. 1
0
        public BranchModel UpdateBranch(BranchModel branchModel)
        {
            Branch branch = DB.Branches.SingleOrDefault(p => p.BranchId == branchModel.BranchId);

            if (branch.Name != branchModel.Name)
            {
                branch.Name = branchModel.Name;
            }

            LocationModel location = new LocationModel(DB.Locations.SingleOrDefault(
                                                           p => p.Latitude.ToString().Substring(0, 10) == branchModel.Latitude.ToString().Substring(0, 10)
                                                           &&
                                                           p.Longitude.ToString().Substring(0, 10) == branchModel.Longitude.ToString().Substring(0, 10)));

            Adress adress = DB.Adresses.SingleOrDefault(p => p.AdressId == DB.BranchesAdresses.FirstOrDefault(p => p.BranchId == branchModel.BranchId).AdressId);

            if ((branchModel.Country != adress.Country || branchModel.City != adress.City || branchModel.AdressLine != adress.AdressLine)
                &&
                (branchModel.Latitude == location.Latitude && branchModel.Longitude == location.Longitude))
            {
                GetLatLngByAdress(branchModel);
            }

            if (adress.Country != branchModel.Country)
            {
                adress.Country = branchModel.Country;
            }
            if (adress.City != branchModel.City)
            {
                adress.City = branchModel.City;
            }
            if (adress.AdressLine != branchModel.AdressLine)
            {
                adress.AdressLine = branchModel.AdressLine;
            }
            if (adress.PostalZipCode != branchModel.PostalZipCode)
            {
                adress.PostalZipCode = branchModel.PostalZipCode;
            }

            if (branchModel.Latitude != location.Latitude || branchModel.Longitude != location.Longitude)
            {
                location.Latitude  = branchModel.Latitude;
                location.Longitude = branchModel.Longitude;
            }

            DB.SaveChanges();

            return(branchModel);
        }
Esempio n. 2
0
        private static BranchModel GetLatLngByAdress(BranchModel branchModel)
        {
            string address    = branchModel.AdressLine + ", " + branchModel.City;
            string apiKey     = "AIzaSyBipKMPPpcUPALUdBAmZ25cKLSj2BBoZA8";
            string requestUri = string.Format("https://maps.googleapis.com/maps/api/geocode/xml?key={1}&address={0}&sensor=false", Uri.EscapeDataString(address), apiKey);

            WebRequest  request  = WebRequest.Create(requestUri);
            WebResponse response = request.GetResponse();
            XDocument   xdoc     = XDocument.Load(response.GetResponseStream());

            XElement result          = xdoc.Element("GeocodeResponse").Element("result");
            XElement locationElement = result.Element("geometry").Element("location");

            branchModel.Latitude  = (decimal)locationElement.Element("lat");
            branchModel.Longitude = (decimal)locationElement.Element("lng");

            return(branchModel);
        }
Esempio n. 3
0
        public BranchModel AddBranch(BranchModel branch)
        {
            if (DB.Branches.SingleOrDefault(p => p.Name == branch.Name) != null)
            {
                throw new ExistingBranchNameException();
            }
            if (DB.Adresses.SingleOrDefault(p => p.City == branch.City && p.AdressLine == branch.AdressLine) != null)
            {
                throw new ExistingAdressException();
            }

            using (DB.Database.BeginTransaction())
            {
                if (branch.Latitude == 0 || branch.Longitude == 0)
                {
                    GetLatLngByAdress(branch);
                }

                Location addedLocation = branch.ConvertToLocation();
                DB.Locations.Add(addedLocation);
                DB.SaveChanges();
                branch.LocationId = addedLocation.LocationId;

                Branch addedBranch = branch.ConvertToBranch();
                DB.Branches.Add(addedBranch);
                DB.SaveChanges();
                branch.BranchId = addedBranch.BranchId;

                Adress addedAdress = branch.ConvertToAdress();
                DB.Adresses.Add(addedAdress);
                DB.SaveChanges();

                BranchesAdress branchesAdress = new BranchesAdress();
                branchesAdress.AdressId = addedAdress.AdressId;
                branchesAdress.BranchId = addedBranch.BranchId;
                DB.BranchesAdresses.Add(branchesAdress);

                DB.SaveChanges();

                DB.Database.CommitTransaction();
            }
            return(branch);
        }