From 9bc0fc3848b1a5bb07280b80dd07880a49a5f6df Mon Sep 17 00:00:00 2001 From: cshowalter Date: Thu, 19 May 2022 19:33:40 -0700 Subject: [PATCH] Added Address Update Option --- API/Controllers/AccountController.cs | 20 +++++++++++++++++--- API/Dtos/AddressDto.cs | 17 +++++++++++++++++ API/Helpers/MappingProfiles.cs | 3 +++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 API/Dtos/AddressDto.cs diff --git a/API/Controllers/AccountController.cs b/API/Controllers/AccountController.cs index 7942d1f..1abe895 100644 --- a/API/Controllers/AccountController.cs +++ b/API/Controllers/AccountController.cs @@ -2,6 +2,7 @@ using System.Security.Claims; using API.Dtos; using API.Errors; using API.Extensions; +using AutoMapper; using Core.Entities.Identity; using Core.Interfaces; using Microsoft.AspNetCore.Authorization; @@ -15,8 +16,10 @@ namespace API.Controllers private readonly UserManager _userManager; private readonly SignInManager _signInManager; private readonly ITokenService _tokenService; - public AccountController(UserManager userManager, SignInManager signInManager, ITokenService tokenService) + private readonly IMapper _mapper; + public AccountController(UserManager userManager, SignInManager signInManager, ITokenService tokenService, IMapper mapper) { + _mapper = mapper; _tokenService = tokenService; _signInManager = signInManager; _userManager = userManager; @@ -42,11 +45,22 @@ namespace API.Controllers [Authorize] [HttpGet("address")] - public async Task> GetUserAddress() + public async Task> GetUserAddress() { var user = await _userManager.FindUserByClaimsPrincipleWithAddressAsync(User); - return user.Address; + return _mapper.Map(user.Address); + } + [Authorize] + [HttpPut("address")] + public async Task> UpdateUserAddress(AddressDto address) + { + var user = await _userManager.FindUserByClaimsPrincipleWithAddressAsync(User); + user.Address = _mapper.Map(address); + var result = await _userManager.UpdateAsync(user); + if(result.Succeeded) return Ok(_mapper.Map(user.Address)); + + return BadRequest("Problem updating user!"); } [HttpPost("login")] diff --git a/API/Dtos/AddressDto.cs b/API/Dtos/AddressDto.cs new file mode 100644 index 0000000..27ee4de --- /dev/null +++ b/API/Dtos/AddressDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace API.Dtos +{ + public class AddressDto + { + public string FirstName { get; set; } + public string LastName { get; set; } + public string Street { get; set; } + public string City { get; set; } + public string State { get; set; } + public string ZipCode { get; set; } + } +} \ No newline at end of file diff --git a/API/Helpers/MappingProfiles.cs b/API/Helpers/MappingProfiles.cs index 929f768..54ccad1 100644 --- a/API/Helpers/MappingProfiles.cs +++ b/API/Helpers/MappingProfiles.cs @@ -1,6 +1,7 @@ using API.Dtos; using AutoMapper; using Core.Entities; +using Core.Entities.Identity; namespace API.Helpers { @@ -12,6 +13,8 @@ namespace API.Helpers .ForMember(d => d.ProductBrand, o => o.MapFrom(s => s.ProductBrand.Name)) .ForMember(d => d.ProductType, o => o.MapFrom(s => s.ProductType.Name)) .ForMember(d => d.PictureUrl, o => o.MapFrom()); + + CreateMap().ReverseMap(); } } } \ No newline at end of file