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()); }
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); }