示例#1
0
        public IHttpActionResult PostAddress(AddressBindingModel addressBM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var address = Mapper.Map <AddressBindingModel, Address>(addressBM);
                    _addressService.Save(address);

                    address = _addressService.GetById(address.Id);

                    addressBM = Mapper.Map <Address, AddressBindingModel>(address);
                    return(Ok(addressBM));
                }
                catch (Exception ex)
                {
                    var result = ex.Message;
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
            return(Ok(StatusCode(HttpStatusCode.BadRequest)));
        }
        public async Task <IHttpActionResult> DeleteAddress(AddressBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());

            if (user == null)
            {
                return(null);
            }

            UserAddress address = new UserAddress()
            {
                City      = model.City,
                Street    = model.Street,
                House     = model.House,
                Apartment = model.Apartment
            };

            UserAddress existingAddress = user.Addresses.FirstOrDefault(ad => ad.Equals(address));

            if (existingAddress == null)
            {
                ModelState.AddModelError("Address",
                                         $"Адрес гор. {address.City}, " +
                                         $"ул. {address.Street}, " +
                                         $"дом {address.House}" +
                                         (address.Apartment == "" ? "" : $", кв. {address.Apartment}") +
                                         " не найден");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            user.Addresses.Remove(existingAddress);
            DBContext.Entry(existingAddress).State = EntityState.Deleted;

            IdentityResult result = await UserManager.UpdateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
        public async Task <IHttpActionResult> AddAddress(AddressBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());

            if (user == null)
            {
                return(null);
            }

            UserAddress address = new UserAddress()
            {
                City      = model.City,
                Street    = model.Street,
                House     = model.House,
                Apartment = model.Apartment
            };

            if (user.Addresses.Any(a => a.Equals(address)))
            {
                ModelState.AddModelError("Address",
                                         $"Адрес гор. {address.City}, " +
                                         $"ул. {address.Street}, " +
                                         $"дом {address.House}" +
                                         (address.Apartment == "" ? "" : $", кв. {address.Apartment}")
                                         + " уже существует");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            user.Addresses.Add(address);

            IdentityResult result = await UserManager.UpdateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
示例#4
0
 public IHttpActionResult DeleteAddress(Guid id)
 {
     try
     {
         var addressBM = new AddressBindingModel
         {
             Id = id
         };
         var address = Mapper.Map <AddressBindingModel, Address>(addressBM);
         _addressService.Delete(address.Id);
         return(Ok());
     }
     catch (Exception ex)
     {
         var result = ex.Message;
     }
     return(Ok(StatusCode(HttpStatusCode.BadRequest)));
 }
        public async Task AddAddressShouldAddAddressCorectly()
        {
            var addressRepository = new Mock <IRepository <Address> >();
            var userRepository    = new Mock <IRepository <ApplicationUser> >();
            var userStoreMock     = new Mock <IUserStore <ApplicationUser> >();
            var userManager       = new Mock <UserManager <ApplicationUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);

            userRepository.Setup(r => r.All()).Returns(new List <ApplicationUser>
            {
                new ApplicationUser {
                    FirstName = "root"
                },
            }.AsQueryable());

            AddressBindingModel address = new AddressBindingModel();

            var user    = userRepository.Object.All().SingleOrDefault(x => x.FirstName == "root");
            var service = new ApplicationUserService(userRepository.Object, addressRepository.Object, userManager.Object);
            await service.AddAddress <AddressBindingModel>(address, user.Id);

            Assert.Single(userRepository.Object.All().SingleOrDefault(x => x.FirstName == "root").Addresses);
        }