Example #1
0
        public async Task DeleteAddress(AddressModel currentAdrress)
        {
            if (currentAdrress != null)
            {
                Address dest = new Address
                {
                    Id = currentAdrress.Id
                };

                DbTransaction transaction = null;//_unitOfWork.BeginTransaction();
                if (currentAdrress.Availabilities != null)
                {
                    foreach (AvailabilityEntityModel aAvailabilityModel in currentAdrress.Availabilities)
                    {
                        AddressAvailability aAvailability =
                            Mapper.Map <AvailabilityEntityModel, AddressAvailability>(aAvailabilityModel);
                        if (aAvailability != null)
                        {
                            await _unitOfWork.AddressAvailabilitiesRepository.DeleteAsync(aAvailability, transaction);
                        }
                    }
                }
                if (currentAdrress.Facilities != null)
                {
                    foreach (FacilityEntityModel aFacilityModel in currentAdrress.Facilities)
                    {
                        AddressFacility aFacility = Mapper.Map <FacilityEntityModel, AddressFacility>(aFacilityModel);
                        if (aFacility != null)
                        {
                            await _unitOfWork.AddressFacilityRepository.DeleteAsync(aFacility, transaction);
                        }
                    }
                }
                if (currentAdrress.Requirements != null)
                {
                    foreach (RequirementEntityModel aRequirementModel in currentAdrress.Requirements)
                    {
                        AddressRequirement aRequirement =
                            Mapper.Map <RequirementEntityModel, AddressRequirement>(aRequirementModel);
                        if (aRequirement != null)
                        {
                            await _unitOfWork.AddressRequirementRepository.DeleteAsync(aRequirement, transaction);
                        }
                    }
                }
                if (currentAdrress.Trucks != null)
                {
                    foreach (TruckEntityModel aTruckModel in currentAdrress.Trucks)
                    {
                        AddressTruck aTruck = Mapper.Map <TruckEntityModel, AddressTruck>(aTruckModel);
                        if (aTruck != null)
                        {
                            await _unitOfWork.AddressTruckRepository.DeleteAsync(aTruck, transaction);
                        }
                    }
                }
                await _unitOfWork.AddressesRepository.DeleteAddress(dest, transaction);

                //  _unitOfWork.Commit(transaction);
            }
        }
Example #2
0
        public async Task <int> SaveAddress(int userId, AddressModel currentAdrress)
        {
            if (currentAdrress == null)
            {
                throw new HttpResponseException(HttpStatusCode.InternalServerError, "Error on save, model is null");
            }

            var dest = new Address
            {
                Id                 = currentAdrress.Id,
                Name               = currentAdrress.Name,
                CustomerId         = currentAdrress.CustomerId,
                ContactPerson      = currentAdrress.ContactPerson,
                Email              = currentAdrress.Email,
                Phone              = currentAdrress.Phone,
                Remark             = currentAdrress.Remark,
                UserIdCreated      = userId,
                DateCreated        = currentAdrress.DateCreated,
                UserIdModified     = currentAdrress.UserIdModified,
                DateModified       = currentAdrress.DateModified,
                CommonAvailability = currentAdrress.CommonAvailability,
                City               = currentAdrress.Location.City,
                Country            = currentAdrress.Location.Country,
                Latitude           = currentAdrress.Location.Latitude,
                Longitude          = currentAdrress.Location.Longitude,
                CityCode           = currentAdrress.Location.CityCode,
                CountryCode        = currentAdrress.Location.CountryCode,
                StateCode          = currentAdrress.Location.StateCode,
                StreetNumber       = currentAdrress.Location.StreetNumber,
                ZipCode            = currentAdrress.Location.ZipCode,
                Street1            = currentAdrress.Location.Street,
                Street2            = currentAdrress.Location.Street,
                StateInfo          = currentAdrress.State,
                OpeningHours       = currentAdrress.OpeningHours,
                ZipCodeNumeric     = GetNumericZipCode(currentAdrress.Location.ZipCode)
            };

            var transaction = _unitOfWork.BeginTransaction();
            await _unitOfWork.AddressesRepository.SaveAddress(userId, dest, transaction);

            currentAdrress.Id = dest.Id;
            if (currentAdrress.Availabilities != null)
            {
                //// if all passed model has no id set, then clean existing availabilities
                if (currentAdrress.Availabilities.All(item => item.Id == -1))
                {
                    _unitOfWork.AddressAvailabilitiesRepository.Delete("AddressId=" + currentAdrress.Id, transaction);
                }

                foreach (var aAvailabilityModel in currentAdrress.Availabilities)
                {
                    var aAvailability = new AddressAvailability
                    {
                        Id        = aAvailabilityModel.Id,
                        AddressId = aAvailabilityModel.EntityId,
                        Day       = aAvailabilityModel.Day,
                        IsClosed  = aAvailabilityModel.IsClosed,
                    };
                    if (!string.IsNullOrEmpty(aAvailabilityModel.AmStart))
                    {
                        aAvailability.AmStart = TimeSpan.Parse(aAvailabilityModel.AmStart.Length == 2 ? aAvailabilityModel.AmStart + ":00" : aAvailabilityModel.AmStart);
                    }
                    if (!string.IsNullOrEmpty(aAvailabilityModel.AmStop))
                    {
                        aAvailability.AmStop = TimeSpan.Parse(aAvailabilityModel.AmStop.Length == 2 ? aAvailabilityModel.AmStop + ":00" : aAvailabilityModel.AmStop);
                    }
                    if (!string.IsNullOrEmpty(aAvailabilityModel.PmStart))
                    {
                        aAvailability.PmStart = TimeSpan.Parse(aAvailabilityModel.PmStart.Length == 2 ? aAvailabilityModel.PmStart + ":00" : aAvailabilityModel.PmStart);
                    }
                    if (!string.IsNullOrEmpty(aAvailabilityModel.PmStop))
                    {
                        aAvailability.PmStop = TimeSpan.Parse(aAvailabilityModel.PmStop.Length == 2 ? aAvailabilityModel.PmStop + ":00" : aAvailabilityModel.PmStop);
                    }
                    aAvailability.DateModified   = DateTime.Now;
                    aAvailability.UserIdModified = userId;
                    if (aAvailability.Id <= 0)
                    {
                        if (currentAdrress.CommonAvailability)
                        {
                            aAvailability.Day = 0;
                        }
                        aAvailability.DateCreated   = DateTime.Now;
                        aAvailability.UserIdCreated = userId;
                        aAvailability.AddressId     = dest.Id;
                        aAvailabilityModel.Id       =
                            await _unitOfWork.AddressAvailabilitiesRepository.AddAsync(aAvailability, transaction);
                    }
                    else
                    {
                        await _unitOfWork.AddressAvailabilitiesRepository.UpdateAsync(aAvailability, transaction);
                    }
                }
            }

            if (currentAdrress.Facilities != null)
            {
                foreach (FacilityEntityModel aFacilityModel in currentAdrress.Facilities)
                {
                    AddressFacility aFacility = Mapper.Map <FacilityEntityModel, AddressFacility>(aFacilityModel);
                    if (aFacility != null)
                    {
                        aFacility.DateModified   = DateTime.Now;
                        aFacility.UserIdModified = userId;
                        if (aFacility.Id <= 0)
                        {
                            aFacility.DateCreated   = DateTime.Now;
                            aFacility.AddressId     = dest.Id;
                            aFacility.UserIdCreated = userId;
                            aFacilityModel.Id       =
                                await _unitOfWork.AddressFacilityRepository.AddAsync(aFacility, transaction);
                        }
                        else
                        {
                            await _unitOfWork.AddressFacilityRepository.UpdateAsync(aFacility, transaction);
                        }
                    }
                }
            }
            if (currentAdrress.Requirements != null)
            {
                foreach (RequirementEntityModel aRequirementModel in currentAdrress.Requirements)
                {
                    AddressRequirement aRequirement =
                        Mapper.Map <RequirementEntityModel, AddressRequirement>(aRequirementModel);
                    if (aRequirement != null)
                    {
                        aRequirement.DateModified   = DateTime.Now;
                        aRequirement.UserIdModified = userId;
                        if (aRequirement.Id <= 0)
                        {
                            aRequirement.DateCreated   = DateTime.Now;
                            aRequirement.AddressId     = dest.Id;
                            aRequirement.UserIdCreated = userId;
                            aRequirementModel.Id       =
                                await _unitOfWork.AddressRequirementRepository.AddAsync(aRequirement, transaction);
                        }
                        else
                        {
                            await _unitOfWork.AddressRequirementRepository.UpdateAsync(aRequirement, transaction);
                        }
                    }
                }
            }
            if (currentAdrress.Trucks != null)
            {
                foreach (TruckEntityModel aTruckModel in currentAdrress.Trucks)
                {
                    AddressTruck aTruck = Mapper.Map <TruckEntityModel, AddressTruck>(aTruckModel);
                    if (aTruck != null)
                    {
                        aTruck.DateModified   = DateTime.Now;
                        aTruck.UserIdModified = userId;
                        if (aTruck.Id <= 0)
                        {
                            aTruck.DateCreated   = DateTime.Now;
                            aTruck.AddressId     = dest.Id;
                            aTruck.UserIdCreated = userId;
                            aTruckModel.Id       = await _unitOfWork.AddressTruckRepository.AddAsync(aTruck, transaction);
                        }
                        else
                        {
                            await _unitOfWork.AddressTruckRepository.UpdateAsync(aTruck, transaction);
                        }
                    }
                }
            }

            _unitOfWork.Commit(transaction);

            return(currentAdrress.Id);
        }