add lastmodified and lastmodifiedid to table also add code for modified and create
This commit is contained in:
@@ -21,13 +21,13 @@ namespace CarParkValidationAPI.Authorization
|
|||||||
public async Task Invoke(HttpContext context, IUserService userService, IJwtUtils jwtUtils)
|
public async Task Invoke(HttpContext context, IUserService userService, IJwtUtils jwtUtils)
|
||||||
{
|
{
|
||||||
var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
|
var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
|
||||||
var userId = jwtUtils.ValidateJwtToken(token);
|
var user = jwtUtils.ValidateJwtToken(token);
|
||||||
if (userId != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
// attach user to context on successful jwt validation
|
// attach user to context on successful jwt validation
|
||||||
//here to put in the real user
|
//here to put in the real user
|
||||||
//TODO if you want to add information for User
|
//TODO if you want to add information for User
|
||||||
// context.Items["User"] = userService.GetById(userId.Value);
|
context.Items["User"] = user;
|
||||||
}
|
}
|
||||||
|
|
||||||
await _next(context);
|
await _next(context);
|
||||||
|
|||||||
@@ -30,7 +30,9 @@ namespace CarParkValidationAPI.Authorization
|
|||||||
var tokenDescriptor = new SecurityTokenDescriptor
|
var tokenDescriptor = new SecurityTokenDescriptor
|
||||||
{
|
{
|
||||||
Subject = new ClaimsIdentity(new[] {
|
Subject = new ClaimsIdentity(new[] {
|
||||||
new Claim("id", user.Id.ToString())
|
new Claim("id", user.Id.ToString()),
|
||||||
|
new Claim("subject", user.Username)
|
||||||
|
|
||||||
//add more if we need it
|
//add more if we need it
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
@@ -40,8 +42,8 @@ namespace CarParkValidationAPI.Authorization
|
|||||||
var token = tokenHandler.CreateToken(tokenDescriptor);
|
var token = tokenHandler.CreateToken(tokenDescriptor);
|
||||||
return tokenHandler.WriteToken(token);
|
return tokenHandler.WriteToken(token);
|
||||||
}
|
}
|
||||||
|
// get back id and username. in subject
|
||||||
public int? ValidateJwtToken(string token)
|
public User? ValidateJwtToken(string token)
|
||||||
{
|
{
|
||||||
if (token == null)
|
if (token == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -61,10 +63,34 @@ namespace CarParkValidationAPI.Authorization
|
|||||||
}, out SecurityToken validatedToken);
|
}, out SecurityToken validatedToken);
|
||||||
|
|
||||||
var jwtToken = (JwtSecurityToken)validatedToken;
|
var jwtToken = (JwtSecurityToken)validatedToken;
|
||||||
var userId = int.Parse(jwtToken.Claims.First(x => x.Type == "id").Value);
|
// var userId = int.Parse(jwtToken.Claims.First(x => x.Type == "id").Value); //old
|
||||||
|
int userId = 0;
|
||||||
|
string username = "";
|
||||||
|
Claim claim;
|
||||||
|
for (int i = 0; i< jwtToken.Claims.Count(); i++)
|
||||||
|
{
|
||||||
|
claim = jwtToken.Claims.ElementAt(i);
|
||||||
|
if (claim.Type == "id")
|
||||||
|
{
|
||||||
|
userId = int.Parse(claim.Value);
|
||||||
|
}
|
||||||
|
else if (claim.Type == "subject")
|
||||||
|
{
|
||||||
|
username = claim.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(username) && userId > 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.Id = userId;
|
||||||
|
user.Username = username;
|
||||||
|
|
||||||
// return user id from JWT token if validation successful
|
// return user id from JWT token if validation successful
|
||||||
return userId;
|
return user;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> AdminUser([FromBody] AdminUserDto model)
|
public async Task<IActionResult> AdminUser([FromBody] AdminUserDto model)
|
||||||
{
|
{
|
||||||
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
|
if (null == currentUser)
|
||||||
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
|
_adminUser.SetCurrentUser(currentUser.Username);
|
||||||
var response = await _adminUser.SaveAdminUserAsync(model);
|
var response = await _adminUser.SaveAdminUserAsync(model);
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
@@ -47,12 +51,10 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpDelete("{id:int}")]
|
[HttpDelete("{id:int}")]
|
||||||
public async Task<IActionResult> DeleteAdminUser(int id)
|
public async Task<IActionResult> DeleteAdminUser(int id)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
// only admins can access other user records
|
|
||||||
var currentUser = (User)HttpContext.Items["User"];
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
if (id != currentUser.Id && currentUser.Role != Role.Admin)
|
if (null == currentUser)
|
||||||
return Unauthorized(new { message = "Unauthorized" });
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
*/
|
_adminUser.SetCurrentUser(currentUser.Username);
|
||||||
var retval = await _adminUser.DeleteAdminUserAsync(id);
|
var retval = await _adminUser.DeleteAdminUserAsync(id);
|
||||||
return Ok(retval);
|
return Ok(retval);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> ConcessionType([FromBody] ConcessionTypeDto model)
|
public async Task<IActionResult> ConcessionType([FromBody] ConcessionTypeDto model)
|
||||||
{
|
{
|
||||||
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
|
if (null == currentUser)
|
||||||
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
|
_concessionType.SetCurrentUser(currentUser.Username);
|
||||||
var response = await _concessionType.SaveConcessionTypeAsync(model);
|
var response = await _concessionType.SaveConcessionTypeAsync(model);
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
public ConcessionValidationController(IConcessionValidation concessionValidation,
|
public ConcessionValidationController(IConcessionValidation concessionValidation,
|
||||||
ConcessionValidationReportRepository concesionReportReport)
|
ConcessionValidationReportRepository concesionReportReport)
|
||||||
{
|
{
|
||||||
|
|
||||||
_concessionValidationReport = concesionReportReport;
|
_concessionValidationReport = concesionReportReport;
|
||||||
_concessionValidation = concessionValidation;
|
_concessionValidation = concessionValidation;
|
||||||
}
|
}
|
||||||
@@ -31,6 +32,10 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> ConcessionValidation([FromBody] ConcessionValidationDto model)
|
public async Task<IActionResult> ConcessionValidation([FromBody] ConcessionValidationDto model)
|
||||||
{
|
{
|
||||||
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
|
if (null == currentUser)
|
||||||
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
|
_concessionValidation.SetCurrentUser(currentUser.Username);
|
||||||
var response = await _concessionValidation.SaveConcessionValidationAsync(model);
|
var response = await _concessionValidation.SaveConcessionValidationAsync(model);
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
@@ -72,12 +77,12 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpDelete("{id:int}")]
|
[HttpDelete("{id:int}")]
|
||||||
public async Task<IActionResult> DeleteConcessionValidation(int id)
|
public async Task<IActionResult> DeleteConcessionValidation(int id)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
// only admins can access other user records
|
// only admins can access other user records
|
||||||
var currentUser = (User)HttpContext.Items["User"];
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
if (id != currentUser.Id && currentUser.Role != Role.Admin)
|
//if (id != currentUser.Id && currentUser.Role != Role.Admin)
|
||||||
return Unauthorized(new { message = "Unauthorized" });
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
*/
|
//
|
||||||
var retval = await _concessionValidation.DeleteConcessionValidationAsync(id);
|
var retval = await _concessionValidation.DeleteConcessionValidationAsync(id);
|
||||||
return Ok(retval);
|
return Ok(retval);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,14 +23,17 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> ValidationPoint([FromBody] ValidationPointDto model)
|
public async Task<IActionResult> ValidationPoint([FromBody] ValidationPointDto model)
|
||||||
{
|
{
|
||||||
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
|
if (null == currentUser)
|
||||||
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
|
_validationPoint.SetCurrentUser(currentUser.Username);
|
||||||
var response = await _validationPoint.SaveValidationPointAsync(model);
|
var response = await _validationPoint.SaveValidationPointAsync(model);
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> ValidationPoint(bool onlyActive=true)
|
public async Task<IActionResult> ValidationPoint(bool onlyActive=true)
|
||||||
{
|
{
|
||||||
var retval = await _validationPoint.LoadValidationPointAsync(onlyActive);
|
var retval = await _validationPoint.LoadValidationPointAsync(onlyActive);
|
||||||
return Ok(retval);
|
return Ok(retval);
|
||||||
}
|
}
|
||||||
@@ -50,12 +53,11 @@ namespace CarParkValidationAPI.Controllers
|
|||||||
[HttpDelete("{id:int}")]
|
[HttpDelete("{id:int}")]
|
||||||
public async Task<IActionResult> DeleteConcessionType(int id)
|
public async Task<IActionResult> DeleteConcessionType(int id)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
// only admins can access other user records
|
// only admins can access other user records
|
||||||
var currentUser = (User)HttpContext.Items["User"];
|
var currentUser = (User)HttpContext.Items["User"];
|
||||||
if (id != currentUser.Id && currentUser.Role != Role.Admin)
|
if (null == currentUser)
|
||||||
return Unauthorized(new { message = "Unauthorized" });
|
return Unauthorized(new { message = "Unauthorized" });
|
||||||
*/
|
_validationPoint.SetCurrentUser(currentUser.Username);
|
||||||
var retval = await _validationPoint.DeleteValidationPointAsync(id);
|
var retval = await _validationPoint.DeleteValidationPointAsync(id);
|
||||||
return Ok(retval);
|
return Ok(retval);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarParkValidationAPI.Entities
|
||||||
|
{
|
||||||
|
public class ApiException
|
||||||
|
{
|
||||||
|
public ApiException(int statusCode, string message = null, string details = null)
|
||||||
|
{
|
||||||
|
StatusCode = statusCode;
|
||||||
|
Message = message;
|
||||||
|
Details = details;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int StatusCode { get; set; }
|
||||||
|
public string Message { get; set; }
|
||||||
|
public string Details { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
|
using CarParkValidationAPI.Entities;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
@@ -10,30 +13,35 @@ namespace CarParkValidationAPI.Helpers
|
|||||||
public class ErrorHandlerMiddleware
|
public class ErrorHandlerMiddleware
|
||||||
{
|
{
|
||||||
private readonly RequestDelegate _next;
|
private readonly RequestDelegate _next;
|
||||||
|
private readonly ILogger<ErrorHandlerMiddleware> _logger;
|
||||||
|
private readonly IHostEnvironment _env;
|
||||||
|
|
||||||
public ErrorHandlerMiddleware(RequestDelegate next)
|
public ErrorHandlerMiddleware(RequestDelegate next,
|
||||||
|
ILogger<ErrorHandlerMiddleware> logger, IHostEnvironment env)
|
||||||
{
|
{
|
||||||
_next = next;
|
_next = next;
|
||||||
|
_logger = logger;
|
||||||
|
_env = env;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Invoke(HttpContext context)
|
public async Task Invoke(HttpContext context)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _next(context);
|
await _next(context);
|
||||||
}
|
}
|
||||||
catch (Exception error)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var response = context.Response;
|
var response = context.Response;
|
||||||
response.ContentType = "application/json";
|
response.ContentType = "application/json";
|
||||||
|
_logger.LogError(ex, ex.Message);
|
||||||
switch(error)
|
/*
|
||||||
|
switch (ex)
|
||||||
{
|
{
|
||||||
// case Exception e:
|
// case Exception e:
|
||||||
// // custom application error
|
// // custom application error
|
||||||
// response.StatusCode = (int)HttpStatusCode.BadRequest;
|
// response.StatusCode = (int)HttpStatusCode.BadRequest;
|
||||||
// break;
|
// break;
|
||||||
case KeyNotFoundException e:
|
case KeyNotFoundException:
|
||||||
// not found error
|
// not found error
|
||||||
response.StatusCode = (int)HttpStatusCode.NotFound;
|
response.StatusCode = (int)HttpStatusCode.NotFound;
|
||||||
break;
|
break;
|
||||||
@@ -41,10 +49,24 @@ namespace CarParkValidationAPI.Helpers
|
|||||||
// unhandled error
|
// unhandled error
|
||||||
response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
||||||
break;
|
break;
|
||||||
}
|
} */
|
||||||
|
response.StatusCode = ex switch
|
||||||
|
{
|
||||||
|
// case Exception e:
|
||||||
|
// // custom application error
|
||||||
|
// response.StatusCode = (int)HttpStatusCode.BadRequest;
|
||||||
|
// break;
|
||||||
|
KeyNotFoundException => (int)HttpStatusCode.NotFound,// not found error
|
||||||
|
_ => (int)HttpStatusCode.InternalServerError,// unhandled error
|
||||||
|
};
|
||||||
|
//response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
||||||
|
var res = _env.IsDevelopment() ?
|
||||||
|
new ApiException(response.StatusCode, ex.Message, ex.StackTrace?.ToString())
|
||||||
|
: new ApiException(response.StatusCode, "Internal Server Error");
|
||||||
|
|
||||||
var result = JsonSerializer.Serialize(new { message = error?.Message });
|
var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
|
||||||
await response.WriteAsync(result);
|
var json = JsonSerializer.Serialize(res, options);
|
||||||
|
await response.WriteAsync(json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,16 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
||||||
namespace CarParkValidationAPI.Interface
|
namespace CarParkValidationAPI.Interface
|
||||||
{
|
{
|
||||||
public interface IAdminUser
|
public interface IAdminUser
|
||||||
{
|
{
|
||||||
Task<ResultModel<List<AdminUserDto>>> LoadAdminUserAsync(bool OnlyActive);
|
Task<ResultModel<List<AdminUserDto>>> LoadAdminUserAsync(bool OnlyActive);
|
||||||
Task<ResultModel<int>> SaveAdminUserAsync(AdminUserDto item);
|
Task<ResultModel<int>> SaveAdminUserAsync(AdminUserDto item);
|
||||||
Task<ResultModel<AdminUserDto>> LoadAdminUserByIdAsync(int id);
|
Task<ResultModel<AdminUserDto>> LoadAdminUserByIdAsync(int id);
|
||||||
Task<ResultModel<bool>> DeleteAdminUserAsync(int id);
|
Task<ResultModel<bool>> DeleteAdminUserAsync(int id);
|
||||||
}
|
void SetCurrentUser(string username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,16 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
||||||
namespace CarParkValidationAPI.Interface
|
namespace CarParkValidationAPI.Interface
|
||||||
{
|
{
|
||||||
public interface IConcessionType
|
public interface IConcessionType
|
||||||
{
|
{
|
||||||
Task<ResultModel<List<ConcessionTypeDto>>> LoadConcessionTypeAsync(bool OnlyActive);
|
Task<ResultModel<List<ConcessionTypeDto>>> LoadConcessionTypeAsync(bool OnlyActive);
|
||||||
Task<ResultModel<int>> SaveConcessionTypeAsync(ConcessionTypeDto item);
|
Task<ResultModel<int>> SaveConcessionTypeAsync(ConcessionTypeDto item);
|
||||||
Task<ResultModel<ConcessionTypeDto>> LoadConcessionTypeByIdAsync(int id);
|
Task<ResultModel<ConcessionTypeDto>> LoadConcessionTypeByIdAsync(int id);
|
||||||
Task<ResultModel<bool>> DeleteConcessionTypeAsync(int id);
|
Task<ResultModel<bool>> DeleteConcessionTypeAsync(int id);
|
||||||
}
|
void SetCurrentUser(string username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,5 +17,6 @@ namespace CarParkValidationAPI.Interface
|
|||||||
Task<ResultModel<ConcessionValidationDto>> LoadConcessionValidationByIdAsync(int id);
|
Task<ResultModel<ConcessionValidationDto>> LoadConcessionValidationByIdAsync(int id);
|
||||||
Task<ResultModel<bool>> DeleteConcessionValidationAsync(int id);
|
Task<ResultModel<bool>> DeleteConcessionValidationAsync(int id);
|
||||||
Task<ResultModel<FileContent>> GetReport(DateTime fromDate, DateTime toDate);
|
Task<ResultModel<FileContent>> GetReport(DateTime fromDate, DateTime toDate);
|
||||||
|
void SetCurrentUser(string username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ namespace CarParkValidationAPI.Interface
|
|||||||
public interface IJwtUtils
|
public interface IJwtUtils
|
||||||
{
|
{
|
||||||
public string GenerateJwtToken(User user);
|
public string GenerateJwtToken(User user);
|
||||||
public int? ValidateJwtToken(string token);
|
public User? ValidateJwtToken(string token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,16 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
||||||
namespace CarParkValidationAPI.Interface
|
namespace CarParkValidationAPI.Interface
|
||||||
{
|
{
|
||||||
public interface IValidationPoint
|
public interface IValidationPoint
|
||||||
{
|
{
|
||||||
Task<ResultModel<List<ValidationPointDto>>> LoadValidationPointAsync(bool OnlyActive);
|
Task<ResultModel<List<ValidationPointDto>>> LoadValidationPointAsync(bool OnlyActive);
|
||||||
Task<ResultModel<int>> SaveValidationPointAsync(ValidationPointDto item);
|
Task<ResultModel<int>> SaveValidationPointAsync(ValidationPointDto item);
|
||||||
Task<ResultModel<ValidationPointDto>> LoadValidationPointByIdAsync(int id);
|
Task<ResultModel<ValidationPointDto>> LoadValidationPointByIdAsync(int id);
|
||||||
Task<ResultModel<bool>> DeleteValidationPointAsync(int id);
|
Task<ResultModel<bool>> DeleteValidationPointAsync(int id);
|
||||||
}
|
void SetCurrentUser(string username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ namespace CarParkValidationAPI.Models
|
|||||||
public bool Active { get; set; }
|
public bool Active { get; set; }
|
||||||
|
|
||||||
public AdminRole RoleType { get; set; }
|
public AdminRole RoleType { get; set; }
|
||||||
|
public DateTime? LastModified { get; set; }
|
||||||
|
public string? LastModifiedId { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ namespace CarParkValidationAPI.Models
|
|||||||
public string ConcessionDisplay { get; set; }
|
public string ConcessionDisplay { get; set; }
|
||||||
|
|
||||||
public bool Active { get; set; }
|
public bool Active { get; set; }
|
||||||
|
public DateTime? LastModified { get; set; }
|
||||||
|
public string? LastModifiedId { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ namespace CarParkValidationAPI.Models
|
|||||||
public string StaffFirstName { get; set; }
|
public string StaffFirstName { get; set; }
|
||||||
public string StaffLastName { get; set; }
|
public string StaffLastName { get; set; }
|
||||||
public string StaffEmail { get; set; }
|
public string StaffEmail { get; set; }
|
||||||
|
public DateTime? CreatedDate { get; set; }
|
||||||
|
public string? CreatedId { get; set; }
|
||||||
|
public DateTime? LastModified { get; set; }
|
||||||
|
public string? LastModifiedId{ get; set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ namespace CarParkValidationAPI.Models
|
|||||||
public string DisplayName { get; set; }
|
public string DisplayName { get; set; }
|
||||||
|
|
||||||
public bool Active { get; set; }
|
public bool Active { get; set; }
|
||||||
|
|
||||||
|
public DateTime? LastModified { get; set; }
|
||||||
|
public string? LastModifiedId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
public class AdminUserFakeRepository : IAdminUser
|
public class AdminUserFakeRepository : IAdminUser
|
||||||
{
|
{
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
private string _currentUser = "";
|
||||||
List<AdminUserDto> _resultList = new List<AdminUserDto>();
|
List<AdminUserDto> _resultList = new List<AdminUserDto>();
|
||||||
private readonly AppSettings _appSettings;
|
private readonly AppSettings _appSettings;
|
||||||
|
|
||||||
@@ -31,7 +32,11 @@ namespace CarParkValidationAPI.Repository
|
|||||||
_appSettings = appSettings.Value;
|
_appSettings = appSettings.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private AdminUserDto FillAdminUserDto(AdminUser model)
|
public void SetCurrentUser(string username)
|
||||||
|
{
|
||||||
|
_currentUser = username;
|
||||||
|
}
|
||||||
|
private AdminUserDto FillAdminUserDto(AdminUser model)
|
||||||
{
|
{
|
||||||
AdminUserDto dto = new AdminUserDto();
|
AdminUserDto dto = new AdminUserDto();
|
||||||
dto.Id = model.UserID;
|
dto.Id = model.UserID;
|
||||||
@@ -46,7 +51,6 @@ namespace CarParkValidationAPI.Repository
|
|||||||
|
|
||||||
private AdminUser FillAdminUser(AdminUserDto dto, AdminUser model)
|
private AdminUser FillAdminUser(AdminUserDto dto, AdminUser model)
|
||||||
{
|
{
|
||||||
|
|
||||||
model.UserID = dto.Id;
|
model.UserID = dto.Id;
|
||||||
model.Name = dto.Name;
|
model.Name = dto.Name;
|
||||||
model.RoleType = dto.RoleType;
|
model.RoleType = dto.RoleType;
|
||||||
|
|||||||
@@ -15,24 +15,27 @@ using System;
|
|||||||
|
|
||||||
namespace CarParkValidationAPI.Repository
|
namespace CarParkValidationAPI.Repository
|
||||||
{
|
{
|
||||||
public class AdminUserRepository : IAdminUser
|
public class AdminUserRepository : IAdminUser
|
||||||
{
|
{
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
private string _currentUser = "";
|
||||||
private readonly AppSettings _appSettings;
|
private readonly AppSettings _appSettings;
|
||||||
|
|
||||||
|
|
||||||
public AdminUserRepository(
|
public AdminUserRepository(
|
||||||
DataContext context,
|
DataContext context,
|
||||||
|
|
||||||
IOptions<AppSettings> appSettings)
|
IOptions<AppSettings> appSettings)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_appSettings = appSettings.Value;
|
_appSettings = appSettings.Value;
|
||||||
}
|
}
|
||||||
|
public void SetCurrentUser(string username)
|
||||||
private AdminUserDto FillAdminUserDto(AdminUser model)
|
{
|
||||||
{
|
_currentUser = username;
|
||||||
|
}
|
||||||
|
private AdminUserDto FillAdminUserDto(AdminUser model)
|
||||||
|
{
|
||||||
AdminUserDto dto = new AdminUserDto();
|
AdminUserDto dto = new AdminUserDto();
|
||||||
dto.Id = model.UserID;
|
dto.Id = model.UserID;
|
||||||
dto.Name = model.Name;
|
dto.Name = model.Name;
|
||||||
@@ -42,7 +45,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
dto.AddedBy = model.AddedBy;
|
dto.AddedBy = model.AddedBy;
|
||||||
dto.AddedOn = model.AddedOn;
|
dto.AddedOn = model.AddedOn;
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
private AdminUser FillAdminUser(AdminUserDto dto, AdminUser model)
|
private AdminUser FillAdminUser(AdminUserDto dto, AdminUser model)
|
||||||
{
|
{
|
||||||
@@ -58,7 +61,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ResultModel<List<AdminUserDto>>> LoadAdminUserAsync(bool onlyActive)
|
public async Task<ResultModel<List<AdminUserDto>>> LoadAdminUserAsync(bool onlyActive)
|
||||||
{
|
{
|
||||||
List<AdminUserDto> resultList = new List<AdminUserDto>();
|
List<AdminUserDto> resultList = new List<AdminUserDto>();
|
||||||
int statuscode = 0;
|
int statuscode = 0;
|
||||||
string error = "";
|
string error = "";
|
||||||
@@ -71,10 +74,10 @@ namespace CarParkValidationAPI.Repository
|
|||||||
AdminUser user;
|
AdminUser user;
|
||||||
for (int i = 0; i < list.Count; i++)
|
for (int i = 0; i < list.Count; i++)
|
||||||
{
|
{
|
||||||
user = list[i];
|
user = list[i];
|
||||||
dto = FillAdminUserDto(user);
|
dto = FillAdminUserDto(user);
|
||||||
resultList.Add(dto);
|
resultList.Add(dto);
|
||||||
|
|
||||||
}
|
}
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
}
|
}
|
||||||
@@ -98,22 +101,22 @@ namespace CarParkValidationAPI.Repository
|
|||||||
int statuscode = 0;
|
int statuscode = 0;
|
||||||
string error = "";
|
string error = "";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (id > 0)
|
if (id > 0)
|
||||||
{
|
{
|
||||||
AdminUser model = await _context.AdminUsers.FindAsync(id);
|
AdminUser model = await _context.AdminUsers.FindAsync(id);
|
||||||
result = FillAdminUserDto(model);
|
result = FillAdminUserDto(model);
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
error = ex.ToString();
|
error = ex.ToString();
|
||||||
statuscode = 0;
|
statuscode = 0;
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ResultModel<AdminUserDto>()
|
return new ResultModel<AdminUserDto>()
|
||||||
{
|
{
|
||||||
Data = result,
|
Data = result,
|
||||||
StatusCode = statuscode,
|
StatusCode = statuscode,
|
||||||
@@ -126,16 +129,18 @@ namespace CarParkValidationAPI.Repository
|
|||||||
int statuscode = 0;
|
int statuscode = 0;
|
||||||
string error = "";
|
string error = "";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AdminUser model;
|
AdminUser model;
|
||||||
if (item.Id > 0)
|
if (item.Id > 0)
|
||||||
{
|
{
|
||||||
model = await _context.AdminUsers.FindAsync(item.Id);
|
model = await _context.AdminUsers.FindAsync(item.Id);
|
||||||
model = FillAdminUser(item, model);
|
model = FillAdminUser(item, model);
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
model = new AdminUser();
|
model = new AdminUser();
|
||||||
model = FillAdminUser(item, model);
|
model = FillAdminUser(item, model);
|
||||||
_context.AdminUsers.Add(model);
|
_context.AdminUsers.Add(model);
|
||||||
@@ -143,15 +148,15 @@ namespace CarParkValidationAPI.Repository
|
|||||||
}
|
}
|
||||||
result = 1;
|
result = 1;
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
result = -1;
|
result = -1;
|
||||||
error = ex.ToString();
|
error = ex.ToString();
|
||||||
statuscode = 0;
|
statuscode = 0;
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ResultModel<int>()
|
return new ResultModel<int>()
|
||||||
{
|
{
|
||||||
Data = result,
|
Data = result,
|
||||||
@@ -159,7 +164,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
Message = error
|
Message = error
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ResultModel<bool>> DeleteAdminUserAsync(int id)
|
public async Task<ResultModel<bool>> DeleteAdminUserAsync(int id)
|
||||||
{
|
{
|
||||||
bool result = true;
|
bool result = true;
|
||||||
@@ -169,9 +174,11 @@ namespace CarParkValidationAPI.Repository
|
|||||||
{
|
{
|
||||||
if (id > 0)
|
if (id > 0)
|
||||||
{
|
{
|
||||||
AdminUser model = await _context.AdminUsers.FindAsync(id);
|
AdminUser model = await _context.AdminUsers.FindAsync(id);
|
||||||
model.Active = false;
|
model.Active = false;
|
||||||
await _context.SaveChangesAsync();
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,7 +189,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
result = false;
|
result = false;
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ResultModel<bool>()
|
return new ResultModel<bool>()
|
||||||
{
|
{
|
||||||
Data = result,
|
Data = result,
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ namespace CarParkValidationAPI.Repository
|
|||||||
public class ConcessionTypeRepository : IConcessionType
|
public class ConcessionTypeRepository : IConcessionType
|
||||||
{
|
{
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
private string _currentUser = "";
|
||||||
private readonly AppSettings _appSettings;
|
private readonly AppSettings _appSettings;
|
||||||
|
|
||||||
public ConcessionTypeRepository(
|
public ConcessionTypeRepository(
|
||||||
DataContext context,
|
DataContext context,
|
||||||
@@ -29,7 +29,10 @@ namespace CarParkValidationAPI.Repository
|
|||||||
_context = context;
|
_context = context;
|
||||||
_appSettings = appSettings.Value;
|
_appSettings = appSettings.Value;
|
||||||
}
|
}
|
||||||
|
public void SetCurrentUser(string username)
|
||||||
|
{
|
||||||
|
_currentUser = username;
|
||||||
|
}
|
||||||
private ConcessionTypeDto FillConcessionTypeDto(ConcessionType model)
|
private ConcessionTypeDto FillConcessionTypeDto(ConcessionType model)
|
||||||
{
|
{
|
||||||
ConcessionTypeDto dto = new ConcessionTypeDto();
|
ConcessionTypeDto dto = new ConcessionTypeDto();
|
||||||
@@ -63,6 +66,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
Active = x.Active
|
Active = x.Active
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
|
result.Sort((x, y) => x.Description.CompareTo(y.Description));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -118,6 +122,8 @@ namespace CarParkValidationAPI.Repository
|
|||||||
{
|
{
|
||||||
model = await _context.ConcessionTypes.FindAsync(item.Id);
|
model = await _context.ConcessionTypes.FindAsync(item.Id);
|
||||||
model = FillConcessionType(item, model);
|
model = FillConcessionType(item, model);
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
result = item.Id;
|
result = item.Id;
|
||||||
}
|
}
|
||||||
@@ -125,6 +131,8 @@ namespace CarParkValidationAPI.Repository
|
|||||||
{
|
{
|
||||||
model = new ConcessionType();
|
model = new ConcessionType();
|
||||||
model = FillConcessionType(item, model);
|
model = FillConcessionType(item, model);
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
_context.ConcessionTypes.Add(model);
|
_context.ConcessionTypes.Add(model);
|
||||||
var id = await _context.SaveChangesAsync();
|
var id = await _context.SaveChangesAsync();
|
||||||
result = id;
|
result = id;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
public class ConcessionValidationRepository : IConcessionValidation
|
public class ConcessionValidationRepository : IConcessionValidation
|
||||||
{
|
{
|
||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
private string _currentUser = "";
|
||||||
private readonly AppSettings _appSettings;
|
private readonly AppSettings _appSettings;
|
||||||
|
|
||||||
public ConcessionValidationRepository(
|
public ConcessionValidationRepository(
|
||||||
@@ -29,6 +29,10 @@ namespace CarParkValidationAPI.Repository
|
|||||||
_appSettings = appSettings.Value;
|
_appSettings = appSettings.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetCurrentUser(string username)
|
||||||
|
{
|
||||||
|
_currentUser = username;
|
||||||
|
}
|
||||||
private ConcessionValidationDto FillConcessionValidationDto(ConcessionValidation model)
|
private ConcessionValidationDto FillConcessionValidationDto(ConcessionValidation model)
|
||||||
{
|
{
|
||||||
ConcessionValidationDto dto = new ConcessionValidationDto();
|
ConcessionValidationDto dto = new ConcessionValidationDto();
|
||||||
@@ -167,7 +171,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
{
|
{
|
||||||
var anyRecord = await _context.SelectCheckConcessionValidationAsync(currentDate.ToLocalTime().Date, concessionCard, staffLinkNo);
|
var anyRecord = await _context.SelectCheckConcessionValidationAsync(currentDate.ToLocalTime().Date, concessionCard, staffLinkNo);
|
||||||
|
|
||||||
if (anyRecord.Count > 0)
|
if (anyRecord.Count > 1)
|
||||||
{
|
{
|
||||||
result = -1;
|
result = -1;
|
||||||
}
|
}
|
||||||
@@ -267,6 +271,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
int result = default(int);
|
int result = default(int);
|
||||||
int statuscode = 0;
|
int statuscode = 0;
|
||||||
string error = "";
|
string error = "";
|
||||||
|
//_currentUser = item.StafflinkNo;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ConcessionValidation model;
|
ConcessionValidation model;
|
||||||
@@ -274,12 +279,18 @@ namespace CarParkValidationAPI.Repository
|
|||||||
{
|
{
|
||||||
model = await _context.ConcessionValidations.FindAsync(item.Id);
|
model = await _context.ConcessionValidations.FindAsync(item.Id);
|
||||||
model = FillConcessionValidation(item, model);
|
model = FillConcessionValidation(item, model);
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
result = await _context.SaveChangesAsync();
|
result = await _context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
model = new ConcessionValidation();
|
model = new ConcessionValidation();
|
||||||
model = FillConcessionValidation(item, model);
|
model = FillConcessionValidation(item, model);
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
|
model.CreatedDate = DateTime.Now;
|
||||||
|
model.CreatedId = _currentUser;
|
||||||
_context.ConcessionValidations.Add(model);
|
_context.ConcessionValidations.Add(model);
|
||||||
result = await _context.SaveChangesAsync();
|
result = await _context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
@@ -312,8 +323,10 @@ namespace CarParkValidationAPI.Repository
|
|||||||
if (id > 0)
|
if (id > 0)
|
||||||
{
|
{
|
||||||
ConcessionValidation model = await _context.ConcessionValidations.FindAsync(id);
|
ConcessionValidation model = await _context.ConcessionValidations.FindAsync(id);
|
||||||
// model.Active = false;
|
model.Active = false;
|
||||||
_context.ConcessionValidations.Remove(model);
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
|
//_context.ConcessionValidations.Remove(model);
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
|
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
|
result.Sort((x,y) => x.Description.CompareTo(y.Description));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -72,6 +73,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
Id = x.ValidationPointID,
|
Id = x.ValidationPointID,
|
||||||
Description = x.Description
|
Description = x.Description
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
result.Sort((x, y) => x.Description.CompareTo(y.Description));
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
|
||||||
private readonly AppSettings _appSettings;
|
private readonly AppSettings _appSettings;
|
||||||
|
private string _currentUser = "";
|
||||||
private List<ValidationPointDto> _list = new List<ValidationPointDto>();
|
private List<ValidationPointDto> _list = new List<ValidationPointDto>();
|
||||||
|
|
||||||
public ValidationPointFakeRepository(
|
public ValidationPointFakeRepository(
|
||||||
@@ -27,7 +27,10 @@ namespace CarParkValidationAPI.Repository
|
|||||||
_context = context;
|
_context = context;
|
||||||
_appSettings = appSettings.Value;
|
_appSettings = appSettings.Value;
|
||||||
}
|
}
|
||||||
|
public void SetCurrentUser(string username)
|
||||||
|
{
|
||||||
|
_currentUser = username;
|
||||||
|
}
|
||||||
private ValidationPointDto FillValidationDto(ValidationPoint item)
|
private ValidationPointDto FillValidationDto(ValidationPoint item)
|
||||||
{
|
{
|
||||||
ValidationPointDto dto = new ValidationPointDto();
|
ValidationPointDto dto = new ValidationPointDto();
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
private DataContext _context;
|
private DataContext _context;
|
||||||
|
|
||||||
private readonly AppSettings _appSettings;
|
private readonly AppSettings _appSettings;
|
||||||
|
private string _currentUser = "";
|
||||||
private List<ValidationPointDto> _list = new List<ValidationPointDto>();
|
private List<ValidationPointDto> _list = new List<ValidationPointDto>();
|
||||||
|
|
||||||
public ValidationPointRepository(
|
public ValidationPointRepository(
|
||||||
@@ -27,7 +27,10 @@ namespace CarParkValidationAPI.Repository
|
|||||||
_context = context;
|
_context = context;
|
||||||
_appSettings = appSettings.Value;
|
_appSettings = appSettings.Value;
|
||||||
}
|
}
|
||||||
|
public void SetCurrentUser(string username)
|
||||||
|
{
|
||||||
|
_currentUser = username;
|
||||||
|
}
|
||||||
private ValidationPointDto FillValidationDto(ValidationPoint item)
|
private ValidationPointDto FillValidationDto(ValidationPoint item)
|
||||||
{
|
{
|
||||||
ValidationPointDto dto = new ValidationPointDto();
|
ValidationPointDto dto = new ValidationPointDto();
|
||||||
@@ -38,7 +41,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ValidationPoint FillValidationModel(ValidationPointDto item, ValidationPoint model) {
|
private ValidationPoint FillValidationModel(ValidationPointDto item, ValidationPoint model) {
|
||||||
|
|
||||||
model.Active = item.Active;
|
model.Active = item.Active;
|
||||||
model.Description = item.Description;
|
model.Description = item.Description;
|
||||||
@@ -61,7 +64,7 @@ namespace CarParkValidationAPI.Repository
|
|||||||
dto = FillValidationDto(it[i]);
|
dto = FillValidationDto(it[i]);
|
||||||
_list.Add(dto);
|
_list.Add(dto);
|
||||||
}
|
}
|
||||||
|
_list.Sort((x, y) => x.Description.CompareTo(y.Description));
|
||||||
statuscode = 1;
|
statuscode = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -116,12 +119,16 @@ namespace CarParkValidationAPI.Repository
|
|||||||
{
|
{
|
||||||
model = await _context.Validations.FindAsync(item.Id);
|
model = await _context.Validations.FindAsync(item.Id);
|
||||||
model = FillValidationModel(item, model);
|
model = FillValidationModel(item, model);
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
result = item.Id;
|
result = item.Id;
|
||||||
}
|
}
|
||||||
else //new record
|
else //new record
|
||||||
{
|
{
|
||||||
model = new ValidationPoint();
|
model = new ValidationPoint();
|
||||||
|
model.LastModified = DateTime.Now;
|
||||||
|
model.LastModifiedId = _currentUser;
|
||||||
model = FillValidationModel(item, model);
|
model = FillValidationModel(item, model);
|
||||||
_context.Validations.Add(model);
|
_context.Validations.Add(model);
|
||||||
var id = await _context.SaveChangesAsync();
|
var id = await _context.SaveChangesAsync();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using CarParkValidationAPI.Authorization;
|
using CarParkValidationAPI.Authorization;
|
||||||
using CarParkValidationAPI.Datas;
|
using CarParkValidationAPI.Datas;
|
||||||
using CarParkValidationAPI.Entities;
|
using CarParkValidationAPI.Entities;
|
||||||
|
using CarParkValidationAPI.Helpers;
|
||||||
using CarParkValidationAPI.Interface;
|
using CarParkValidationAPI.Interface;
|
||||||
using CarParkValidationAPI.Models;
|
using CarParkValidationAPI.Models;
|
||||||
using CarParkValidationAPI.Repository;
|
using CarParkValidationAPI.Repository;
|
||||||
@@ -97,15 +98,15 @@ namespace CarParkValidationAPI
|
|||||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, DataContext context)
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, DataContext context)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
if (env.IsDevelopment())
|
if (env.IsDevelopment())
|
||||||
{
|
{
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseDeveloperExceptionPage();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
app.UseMiddleware<ErrorHandlerMiddleware>(); // use this exception
|
||||||
|
|
||||||
app.UseSwagger();
|
app.UseSwagger();
|
||||||
|
|
||||||
app.UseSwaggerUI(c =>
|
app.UseSwaggerUI(c =>
|
||||||
{
|
{
|
||||||
c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
|
c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
|
||||||
@@ -133,9 +134,8 @@ namespace CarParkValidationAPI
|
|||||||
|
|
||||||
/* if add angular under wwwroot then two line below needed*/
|
/* if add angular under wwwroot then two line below needed*/
|
||||||
/***************************/
|
/***************************/
|
||||||
// app.UseDefaultFiles(); //it will use index.html <------------------
|
// app.UseDefaultFiles(); //it will use index.html <------------------
|
||||||
// app.UseStaticFiles(); //it for angular <-------------------------
|
// app.UseStaticFiles(); //it for angular <-------------------------
|
||||||
|
|
||||||
/***************************/
|
/***************************/
|
||||||
|
|
||||||
app.UseEndpoints(endpoints =>
|
app.UseEndpoints(endpoints =>
|
||||||
|
|||||||
Reference in New Issue
Block a user