Continued Validation Checking
This commit is contained in:
parent
9bc0fc3848
commit
762066f13d
@ -81,6 +81,11 @@ namespace API.Controllers
|
|||||||
[HttpPost("register")]
|
[HttpPost("register")]
|
||||||
public async Task<ActionResult<UserDto>> Register(RegisterDto registerDto)
|
public async Task<ActionResult<UserDto>> Register(RegisterDto registerDto)
|
||||||
{
|
{
|
||||||
|
if(CheckEmailExistsAsync(registerDto.Email).Result.Value)
|
||||||
|
{
|
||||||
|
return new BadRequestObjectResult(new ApiValidationErrorResponse{Errors = new []{"Email address is in use"}});
|
||||||
|
}
|
||||||
|
|
||||||
var user = new AppUser
|
var user = new AppUser
|
||||||
{
|
{
|
||||||
DisplayName = registerDto.DisplayName,
|
DisplayName = registerDto.DisplayName,
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using API.Dtos;
|
||||||
|
using AutoMapper;
|
||||||
using Core.Entities;
|
using Core.Entities;
|
||||||
using Core.Interfaces;
|
using Core.Interfaces;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@ -7,8 +9,10 @@ namespace API.Controllers
|
|||||||
public class BasketController : BaseApiController
|
public class BasketController : BaseApiController
|
||||||
{
|
{
|
||||||
private readonly IBasketRepository _basketRepository;
|
private readonly IBasketRepository _basketRepository;
|
||||||
public BasketController(IBasketRepository basketRepository)
|
private readonly IMapper _mapper;
|
||||||
|
public BasketController(IBasketRepository basketRepository, IMapper mapper)
|
||||||
{
|
{
|
||||||
|
_mapper = mapper;
|
||||||
_basketRepository = basketRepository;
|
_basketRepository = basketRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,9 +24,10 @@ namespace API.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult<CustomerBasket>> UpdateBasket(CustomerBasket basket)
|
public async Task<ActionResult<CustomerBasket>> UpdateBasket(CustomerBasketDto basket)
|
||||||
{
|
{
|
||||||
var updatedBasket = await _basketRepository.UpdateBasketAsync(basket);
|
var customerBasket = _mapper.Map<CustomerBasketDto, CustomerBasket>(basket);
|
||||||
|
var updatedBasket = await _basketRepository.UpdateBasketAsync(customerBasket);
|
||||||
return Ok(updatedBasket);
|
return Ok(updatedBasket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -7,11 +8,22 @@ namespace API.Dtos
|
|||||||
{
|
{
|
||||||
public class AddressDto
|
public class AddressDto
|
||||||
{
|
{
|
||||||
|
[Required]
|
||||||
public string FirstName { get; set; }
|
public string FirstName { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string LastName { get; set; }
|
public string LastName { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string Street { get; set; }
|
public string Street { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string City { get; set; }
|
public string City { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string State { get; set; }
|
public string State { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string ZipCode { get; set; }
|
public string ZipCode { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
30
API/Dtos/BasketItemDto.cs
Normal file
30
API/Dtos/BasketItemDto.cs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace API.Dtos
|
||||||
|
{
|
||||||
|
public class BasketItemDto
|
||||||
|
{
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string productName { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Range(0.1, double.MaxValue, ErrorMessage = "Price must be greather than 0")]
|
||||||
|
public decimal Price { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Range(1, double.MaxValue, ErrorMessage = "Quantity must be at least 1")]
|
||||||
|
public int Quantity { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string PictureUrl { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Brand { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Type { get; set; }
|
||||||
|
}
|
||||||
|
}
|
11
API/Dtos/CustomerBasketDto.cs
Normal file
11
API/Dtos/CustomerBasketDto.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace API.Dtos
|
||||||
|
{
|
||||||
|
public class CustomerBasketDto
|
||||||
|
{
|
||||||
|
[Required]
|
||||||
|
public string Id { get; set; }
|
||||||
|
public List<BasketItemDto> Items { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -7,8 +8,15 @@ namespace API.Dtos
|
|||||||
{
|
{
|
||||||
public class RegisterDto
|
public class RegisterDto
|
||||||
{
|
{
|
||||||
|
[Required]
|
||||||
public string DisplayName { get; set; }
|
public string DisplayName { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[EmailAddress]
|
||||||
public string Email { get; set; }
|
public string Email { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[RegularExpression("(?=^.{6,10}$)(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+}{":;'?/>.<,])(?!.*\\s).*$", ErrorMessage = "Password does not meet complexity. Password must have 1 Uppercase, 1 Lowercase, 1 Number, 1 Special Character and at least 6 characeters.")]
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,7 +8,24 @@ namespace API.Extensions
|
|||||||
{
|
{
|
||||||
services.AddSwaggerGen(c =>
|
services.AddSwaggerGen(c =>
|
||||||
{
|
{
|
||||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebAPIv5", Version = "v1" });
|
c.SwaggerDoc("v1", new OpenApiInfo { Title = "SkitNet API", Version = "v1" });
|
||||||
|
var securitySchema = new OpenApiSecurityScheme
|
||||||
|
{
|
||||||
|
Description = "JWT Auth Bearer Scheme",
|
||||||
|
Name = "Authorization",
|
||||||
|
In = ParameterLocation.Header,
|
||||||
|
Type = SecuritySchemeType.Http,
|
||||||
|
Scheme = "bearer",
|
||||||
|
Reference = new OpenApiReference
|
||||||
|
{
|
||||||
|
Type = ReferenceType.SecurityScheme,
|
||||||
|
Id = "Bearer"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
c.AddSecurityDefinition("Bearer", securitySchema);
|
||||||
|
var securityRequirements = new OpenApiSecurityRequirement {{securitySchema, new[]{"Bearer"}}};
|
||||||
|
c.AddSecurityRequirement(securityRequirements);
|
||||||
});
|
});
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
|
@ -15,6 +15,8 @@ namespace API.Helpers
|
|||||||
.ForMember(d => d.PictureUrl, o => o.MapFrom<ProductUrlResolver>());
|
.ForMember(d => d.PictureUrl, o => o.MapFrom<ProductUrlResolver>());
|
||||||
|
|
||||||
CreateMap<Address, AddressDto>().ReverseMap();
|
CreateMap<Address, AddressDto>().ReverseMap();
|
||||||
|
CreateMap<CustomerBasketDto, CustomerBasket>();
|
||||||
|
CreateMap<BasketItemDto, BasketItem>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user