public async Task <IResult> CreateOrUpdateAsync(UserAddressCreateUpdateDTO createUpdateDTO)
        {
            UserAddress userAddress;

            if (createUpdateDTO.Id != 0)
            {
                userAddress = await _userAddressDAL.GetAsync(x => x.Id == createUpdateDTO.Id);

                userAddress.AddressType    = createUpdateDTO.AddressType;
                userAddress.CityId         = createUpdateDTO.CityId;
                userAddress.DistrictId     = createUpdateDTO.DistrictId;
                userAddress.NeighborhoodId = createUpdateDTO.NeighborhoodId;
                userAddress.OpenAddress    = createUpdateDTO.OpenAddress;
                _userAddressDAL.Update(userAddress);
            }
            else
            {
                userAddress = new UserAddress
                {
                    AddressType    = createUpdateDTO.AddressType,
                    CityId         = createUpdateDTO.CityId,
                    DistrictId     = createUpdateDTO.DistrictId,
                    NeighborhoodId = createUpdateDTO.NeighborhoodId,
                    OpenAddress    = createUpdateDTO.OpenAddress,
                    UserId         = Convert.ToInt32(_httpContextAccessor.HttpContext.User.FindFirst("UserId").Value)
                };
                _userAddressDAL.Add(userAddress);
            }
            int result = await _uow.Complete();

            return(ResultHelper <int> .ResultReturn(result));
        }
        public async Task <IActionResult> CreateOrUpdate(int?id = null)
        {
            UserAddressCreateUpdateDTO userAddress = new UserAddressCreateUpdateDTO();

            if (id != null)
            {
                userAddress = await _userAddressService.GetUserAddressCreateUpdateDtoModel(id.Value);
            }

            ViewBag.Cities = await _userAddressService.GetCityList();

            return(View(userAddress));
        }
        public async Task <UserAddressCreateUpdateDTO> GetUserAddressCreateUpdateDtoModel(int addressId)
        {
            UserAddress userAddress = await _userAddressDAL.GetAsync(x => x.Id == addressId);

            UserAddressCreateUpdateDTO createUpdateDTO = new UserAddressCreateUpdateDTO
            {
                Id             = userAddress.Id,
                AddressType    = userAddress.AddressType,
                CityId         = userAddress.CityId,
                DistrictId     = userAddress.DistrictId,
                NeighborhoodId = userAddress.NeighborhoodId,
                OpenAddress    = userAddress.OpenAddress
            };

            return(createUpdateDTO);
        }
        public async Task <IActionResult> CreateOrUpdate(UserAddressCreateUpdateDTO createUpdateDTO)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.Cities = await _userAddressService.GetCityList();

                return(View(nameof(CreateOrUpdate), createUpdateDTO));
            }
            IResult result = await _userAddressService.CreateOrUpdateAsync(createUpdateDTO);

            if (!result.IsSuccess)
            {
                ViewBag.Cities = await _userAddressService.GetCityList();

                ModelState.AddModelError("CreateError", result.Message);
                return(View(nameof(CreateOrUpdate), createUpdateDTO));
            }
            return(RedirectToAction(nameof(Addresses), "Address"));
        }