Exemple #1
0
        private static BaseCustomerDto GetCustomer(Domain.Customer.Customer customer)
        {
            var address = customer.Address;

            var addressDto = new CustomerAddressDto
            {
                Street  = address.Street,
                City    = address.City,
                ZipCode = address.ZipCode,
                Number  = address.Number
            };

            return(customer switch
            {
                MrGreenCustomer mrGreenCustomer => new MrGreenCustomerDto
                {
                    Id = mrGreenCustomer.Id,
                    FirstName = mrGreenCustomer.FirstName,
                    LastName = mrGreenCustomer.LastName,
                    PersonalNumber = mrGreenCustomer.PersonalNumber,
                    Address = addressDto
                },
                RedBetCustomer redBetCustomer => new RedBetCustomerDto
                {
                    Id = redBetCustomer.Id,
                    FirstName = redBetCustomer.FirstName,
                    LastName = redBetCustomer.LastName,
                    FavoriteFootballTeam = redBetCustomer.FavoriteFootballClub,
                    Address = addressDto
                },
                _ => throw new InvalidOperationException("Customer Type is not supported")
            });
        public CustomerAddressDto UpdateCustomerAddress(CustomerAddressDto model)
        {
            try
            {
                var customerAddressesList = _context.customersaddresses.Where(x => x.CustomerId == model.AddressCustomerId).ToList();

                if (customerAddressesList.Count == 0 || !customerAddressesList.Any(x => x.IsPrimary == true))
                {
                    model.IsPrimary = true;
                }
                else if (model.IsPrimary)
                {
                    foreach (var address in customerAddressesList)
                    {
                        address.IsPrimary = false;

                        _context.Entry(address).State = System.Data.Entity.EntityState.Modified;
                        _context.SaveChanges();
                    }
                }

                var oldCustomerAddress = _context.customersaddresses.FirstOrDefault(x => x.CustomerAddressID == model.CustomerAddressID);

                var updatedCustomerAddress = Mapper.Map <customersaddress>(model);
                updatedCustomerAddress.Modified   = DateTime.Now;
                updatedCustomerAddress.ModifiedBy = model.ModifiedBy;
                updatedCustomerAddress.Created    = oldCustomerAddress.Created;
                updatedCustomerAddress.CreatedBy  = oldCustomerAddress.CreatedBy;

                updatedCustomerAddress.CustomerId   = model.AddressCustomerId;
                updatedCustomerAddress.EmailAddress = model.customerEmailAddress;
                updatedCustomerAddress.Country      = Convert.ToInt32(model.SelectedCountryId);


                _context.Entry(oldCustomerAddress).CurrentValues.SetValues(updatedCustomerAddress);
                _context.SaveChanges();

                return(model);
            }
            catch (DbEntityValidationException ex)
            {
                var errorMsg = EisHelper.ParseDbEntityValidationException(ex);
                _logger.LogError(LogEntryType.CustomerService, errorMsg, ex.StackTrace);
                throw ex;
            }
            catch (Exception ex)
            {
                _logger.LogError(LogEntryType.CustomerService, EisHelper.GetExceptionMessage(ex), ex.StackTrace);
                throw ex;
            }
        }
Exemple #3
0
        public CustomerAddressDto CreateOrUpdateCustomerAddress(CustomerAddressDto dto, int RequestUserId, string TokenKey)
        {
            try
            {
                CheckAuthentication(RequestUserId, TokenKey);
                #region Empty Control
                if (dto.CustomerId.IsNullOrEmpty())
                {
                    throw new RequestWarningException(ErrorTypeEnum.WarningException, ExceptionCodeHelper.CannotEmptyField, ExceptionMessageHelper.CannotEmptyField("Customer Id"));
                }
                if (dto.AddressTitle.IsNullOrEmpty())
                {
                    throw new RequestWarningException(ErrorTypeEnum.WarningException, ExceptionCodeHelper.CannotEmptyField, ExceptionMessageHelper.CannotEmptyField("Address Title"));
                }
                #endregion

                var data = GetAllCachedData <CustomerAddressDto>().ToList();

                var entity = dto.ConvertTo <CustomerAdressEntitiy>();
                var conn   = Db.CreateConnection(true);
                if (dto.Id > 0)
                {
                    entity.UpdateUser = RequestUserId;
                    entity.UpdateDate = DateTimeHelper.Now;
                    conn.Update(entity, Db._DbTransaction);
                    data.RemoveAt(data.FindIndex(q => q.Id == entity.Id));
                }
                else
                {
                    int Id = conn.Insert(entity, Db._DbTransaction).ToInt();
                    entity = conn.Get <CustomerAdressEntitiy>(Id);
                }
                var result = entity.ConvertTo <CustomerAddressDto>();
                data.Add(result);
                FillCacheData(data);
                return(result);
            }
            catch (KnownException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                Logger.AddLog(LogTypeEnum.Error, "CustomerManager.CreateOrUpdateCustomerAddress", RequestUserId, ex.Message, dto.ToJson(), ex);
                throw new KnownException(ErrorTypeEnum.UnexpectedExeption, ex.Message, ex);
            }
        }
        public SingleResult <long> InsertCustomerAddress_UI(CustomerAddressDto addressdto)
        {
            try
            {
                var userId     = ClaimPrincipalFactory.GetUserId(User);
                var customerId = _repository.Customer.FindByCondition(c => c.UserId == userId).Select(c => c.Id)
                                 .FirstOrDefault();
                if (customerId == 0)
                {
                    return(SingleResult <long> .GetFailResult("مشتری یافت نشد"));
                }
                var address = _mapper.Map <CustomerAddress>(addressdto);

                address.CustomerId = customerId;
                address.CuserId    = userId;
                address.Cdate      = DateTime.Now.Ticks;
                _repository.CustomerAddress.Create(address);
                if (address.DefualtAddress.HasValue && address.DefualtAddress.Value)
                {
                    var addresslist = _repository.CustomerAddress.FindByCondition(c => c.CustomerId == customerId && c.Ddate == null && c.DaDate == null && c.DefualtAddress == true)
                                      .FirstOrDefault();
                    if (addresslist != null)
                    {
                        addresslist.DefualtAddress = false;
                        addresslist.Mdate          = DateTime.Now.Ticks;
                        addresslist.MuserId        = userId;
                        _repository.CustomerAddress.Update(addresslist);
                    }
                }

                _repository.Save();
                return(SingleResult <long> .GetSuccessfulResult(address.Id));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message, addressdto);
                return(SingleResult <long> .GetFailResult(e.Message));
            }
        }
        public ActionResult SaveAddress(CustomerAddressDto model)
        {
            if (!ModelState.IsValid)
            {
                var errors = ModelState.Values.SelectMany(e => e.Errors.Select(x => x.ErrorMessage));
                ModelState.AddModelError("", string.Join("<br/>", errors));
                return(View("Edit", model));
            }


            // save the message template
            model.ModifiedBy = User.Identity.Name;
            if (model.CustomerAddressID == -1)
            {
                model = _customerService.CreateCustomerAddress(model);
            }
            else
            {
                model = _customerService.UpdateCustomerAddress(model);
            }

            TempData["Message"] = "Changes have been successfully saved!";
            return(RedirectToAction("edit", new { id = model.AddressCustomerId }));
        }