Continued Validation Checking
This commit is contained in:
parent
9bc0fc3848
commit
762066f13d
@ -81,6 +81,11 @@ namespace API.Controllers
|
||||
[HttpPost("register")]
|
||||
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
|
||||
{
|
||||
DisplayName = registerDto.DisplayName,
|
||||
|
@ -1,3 +1,5 @@
|
||||
using API.Dtos;
|
||||
using AutoMapper;
|
||||
using Core.Entities;
|
||||
using Core.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@ -7,8 +9,10 @@ namespace API.Controllers
|
||||
public class BasketController : BaseApiController
|
||||
{
|
||||
private readonly IBasketRepository _basketRepository;
|
||||
public BasketController(IBasketRepository basketRepository)
|
||||
private readonly IMapper _mapper;
|
||||
public BasketController(IBasketRepository basketRepository, IMapper mapper)
|
||||
{
|
||||
_mapper = mapper;
|
||||
_basketRepository = basketRepository;
|
||||
}
|
||||
|
||||
@ -20,9 +24,10 @@ namespace API.Controllers
|
||||
}
|
||||
|
||||
[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);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@ -7,11 +8,22 @@ namespace API.Dtos
|
||||
{
|
||||
public class AddressDto
|
||||
{
|
||||
[Required]
|
||||
public string FirstName { get; set; }
|
||||
|
||||
[Required]
|
||||
public string LastName { get; set; }
|
||||
|
||||
[Required]
|
||||
public string Street { get; set; }
|
||||
|
||||
[Required]
|
||||
public string City { get; set; }
|
||||
|
||||
[Required]
|
||||
public string State { get; set; }
|
||||
|
||||
[Required]
|
||||
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.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@ -7,8 +8,15 @@ namespace API.Dtos
|
||||
{
|
||||
public class RegisterDto
|
||||
{
|
||||
[Required]
|
||||
public string DisplayName { get; set; }
|
||||
|
||||
[Required]
|
||||
[EmailAddress]
|
||||
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; }
|
||||
}
|
||||
}
|
@ -8,7 +8,24 @@ namespace API.Extensions
|
||||
{
|
||||
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;
|
||||
|
@ -15,6 +15,8 @@ namespace API.Helpers
|
||||
.ForMember(d => d.PictureUrl, o => o.MapFrom<ProductUrlResolver>());
|
||||
|
||||
CreateMap<Address, AddressDto>().ReverseMap();
|
||||
CreateMap<CustomerBasketDto, CustomerBasket>();
|
||||
CreateMap<BasketItemDto, BasketItem>();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user