Changed Response format of all APIs
This commit is contained in:
parent
9c4b1639fe
commit
352b4fb40e
@ -1,4 +1,5 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using System.Globalization;
|
||||||
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.AttendanceModule;
|
using Marco.Pms.Model.AttendanceModule;
|
||||||
using Marco.Pms.Model.Dtos.Attendance;
|
using Marco.Pms.Model.Dtos.Attendance;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
@ -9,7 +10,6 @@ using MarcoBMS.Services.Helpers;
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Globalization;
|
|
||||||
|
|
||||||
namespace MarcoBMS.Services.Controllers
|
namespace MarcoBMS.Services.Controllers
|
||||||
{
|
{
|
||||||
@ -59,7 +59,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
if (date != null && DateOnly.TryParse(date, out forDate) == false)
|
if (date != null && DateOnly.TryParse(date, out forDate) == false)
|
||||||
{
|
{
|
||||||
return StatusCode(400, ApiResponse<object>.SuccessResponse(date, "Invalid Date", 400));// new { error = ex.Message });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid Date", "Invalid Date", 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
List<AttendanceLog> lstAttendance = await _context.AttendanceLogs.Where(c => c.EmployeeID == employeeid && c.TenantId == TenantId).ToListAsync();
|
List<AttendanceLog> lstAttendance = await _context.AttendanceLogs.Where(c => c.EmployeeID == employeeid && c.TenantId == TenantId).ToListAsync();
|
||||||
@ -85,18 +85,16 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
if (dateFrom != null && DateTime.TryParse(dateFrom, out fromDate) == false)
|
if (dateFrom != null && DateTime.TryParse(dateFrom, out fromDate) == false)
|
||||||
{
|
{
|
||||||
return StatusCode(400, ApiResponse<object>.SuccessResponse(dateFrom, "Invalid Date", 400));// new { error = ex.Message });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid Date", "Invalid Date", 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
if (dateTo != null && DateTime.TryParse(dateTo, out toDate) == false)
|
if (dateTo != null && DateTime.TryParse(dateTo, out toDate) == false)
|
||||||
{
|
{
|
||||||
return StatusCode(400, ApiResponse<object>.SuccessResponse(dateTo, "Invalid Date", 400));// new { error = ex.Message });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid Date", "Invalid Date", 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (projectId <= 0)
|
if (projectId <= 0)
|
||||||
{
|
{
|
||||||
return BadRequest("Project ID is required and must be greater than zero.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Project ID is required and must be greater than zero.", "Project ID is required and must be greater than zero.", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = new List<EmployeeAttendanceVM>();
|
var result = new List<EmployeeAttendanceVM>();
|
||||||
@ -151,12 +149,12 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
if (date != null && DateTime.TryParse(date, out forDate) == false)
|
if (date != null && DateTime.TryParse(date, out forDate) == false)
|
||||||
{
|
{
|
||||||
return StatusCode(400, ApiResponse<object>.SuccessResponse(date, "Invalid Date", 400));// new { error = ex.Message });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid Date", "Invalid Date", 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
if (projectId <= 0)
|
if (projectId <= 0)
|
||||||
{
|
{
|
||||||
return BadRequest("Project ID is required and must be greater than zero.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Project ID is required and must be greater than zero.", "Project ID is required and must be greater than zero.", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = new List<EmployeeAttendanceVM>();
|
var result = new List<EmployeeAttendanceVM>();
|
||||||
@ -204,7 +202,13 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
public async Task<IActionResult> RecordAttendance([FromBody] RecordAttendanceDot recordAttendanceDot)
|
public async Task<IActionResult> RecordAttendance([FromBody] RecordAttendanceDot recordAttendanceDot)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return BadRequest(ModelState);
|
{
|
||||||
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
}
|
||||||
|
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
|
|
||||||
@ -233,13 +237,10 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
//string timeString = "10:30 PM"; // Format: "hh:mm tt"
|
//string timeString = "10:30 PM"; // Format: "hh:mm tt"
|
||||||
|
|
||||||
//DateTime finalDateTime = GetDateFromTimeStamp(recordAttendanceDot, recordAttendanceDot.MarkTime);
|
|
||||||
|
|
||||||
attendance.OutTime = finalDateTime;
|
attendance.OutTime = finalDateTime;
|
||||||
}
|
}
|
||||||
else if (recordAttendanceDot.Action == ATTENDANCE_MARK_TYPE.REQUEST_REGULARIZE)
|
else if (recordAttendanceDot.Action == ATTENDANCE_MARK_TYPE.REQUEST_REGULARIZE)
|
||||||
{
|
{
|
||||||
//DateTime finalDateTime = GetDateFromTimeStamp(recordAttendanceDot, recordAttendanceDot.MarkTime);
|
|
||||||
|
|
||||||
attendance.OutTime = finalDateTime;
|
attendance.OutTime = finalDateTime;
|
||||||
attendance.Activity = ATTENDANCE_MARK_TYPE.REQUEST_REGULARIZE;
|
attendance.Activity = ATTENDANCE_MARK_TYPE.REQUEST_REGULARIZE;
|
||||||
@ -274,7 +275,6 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
attendance.Date = DateTime.UtcNow;
|
attendance.Date = DateTime.UtcNow;
|
||||||
|
|
||||||
|
|
||||||
//DateTime finalDateTime = GetDateFromTimeStamp(recordAttendanceDot, recordAttendanceDot.MarkTime);
|
|
||||||
|
|
||||||
attendance.InTime = finalDateTime;
|
attendance.InTime = finalDateTime;
|
||||||
attendance.OutTime = null;
|
attendance.OutTime = null;
|
||||||
@ -332,12 +332,9 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
await transaction.RollbackAsync(); // Rollback on failure
|
await transaction.RollbackAsync(); // Rollback on failure
|
||||||
return StatusCode(500, ApiResponse<object>.SuccessResponse(new object(), ex.Message, 500));// new { error = ex.Message });
|
return BadRequest(ApiResponse<object>.ErrorResponse(ex.Message, ex, 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse("success", "Roles modified.", 200));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DateTime GetDateFromTimeStamp(RecordAttendanceDot recordAttendanceDot, string timeString)
|
private static DateTime GetDateFromTimeStamp(RecordAttendanceDot recordAttendanceDot, string timeString)
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using System.Net;
|
||||||
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Authentication;
|
using Marco.Pms.Model.Authentication;
|
||||||
using Marco.Pms.Model.Dtos;
|
using Marco.Pms.Model.Dtos;
|
||||||
using Marco.Pms.Model.Dtos.Util;
|
using Marco.Pms.Model.Dtos.Util;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels.Employee;
|
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using MarcoBMS.Services.Service;
|
using MarcoBMS.Services.Service;
|
||||||
using Microsoft.AspNetCore.Cors;
|
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Identity.Data;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Net;
|
|
||||||
|
|
||||||
namespace MarcoBMS.Services.Controllers
|
namespace MarcoBMS.Services.Controllers
|
||||||
{
|
{
|
||||||
@ -48,16 +45,19 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
if (user == null || !await _userManager.CheckPasswordAsync(user, loginDto.Password))
|
if (user == null || !await _userManager.CheckPasswordAsync(user, loginDto.Password))
|
||||||
{
|
{
|
||||||
return Unauthorized("Invalid username or password.");
|
return Unauthorized(ApiResponse<object>.ErrorResponse("Invalid username or password.", "Invalid username or password.", 401));
|
||||||
|
//return Unauthorized("Invalid username or password.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!user.IsActive)
|
if (!user.IsActive)
|
||||||
{
|
{
|
||||||
return BadRequest("User is In Active");
|
return BadRequest(ApiResponse<object>.ErrorResponse("User is In Active", "User is In Active", 400));
|
||||||
|
//return BadRequest("User is In Active");
|
||||||
}
|
}
|
||||||
if (!user.EmailConfirmed)
|
if (!user.EmailConfirmed)
|
||||||
{
|
{
|
||||||
return BadRequest("Your email is not verified, Please verify your email");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Your email is not verified, Please verify your email", "Your email is not verified, Please verify your email", 400));
|
||||||
|
//return BadRequest("Your email is not verified, Please verify your email");
|
||||||
}
|
}
|
||||||
Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id);
|
Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id);
|
||||||
//var refreshToken = GenerateRefreshToken();
|
//var refreshToken = GenerateRefreshToken();
|
||||||
@ -74,7 +74,8 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(logoutDto.RefreshToken))
|
if (string.IsNullOrEmpty(logoutDto.RefreshToken))
|
||||||
{
|
{
|
||||||
return BadRequest(new { Message = "Refresh token is required" });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Refresh token is required", "Refresh token is required", 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -83,7 +84,8 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
bool isRevoked = await _refreshTokenService.RevokeRefreshTokenAsync(logoutDto.RefreshToken);
|
bool isRevoked = await _refreshTokenService.RevokeRefreshTokenAsync(logoutDto.RefreshToken);
|
||||||
|
|
||||||
if (!isRevoked)
|
if (!isRevoked)
|
||||||
return Unauthorized(new { Message = "Invalid or expired refresh token" });
|
return Unauthorized(ApiResponse<object>.ErrorResponse("Invalid or expired refresh token", "Invalid or expired refresh token", 401));
|
||||||
|
|
||||||
|
|
||||||
// Optional: Blacklist the access token (JWT)
|
// Optional: Blacklist the access token (JWT)
|
||||||
string jwtToken = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
|
string jwtToken = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
|
||||||
@ -91,38 +93,22 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
await _refreshTokenService.BlacklistJwtTokenAsync(jwtToken);
|
await _refreshTokenService.BlacklistJwtTokenAsync(jwtToken);
|
||||||
}
|
}
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(new { }, "Logged out successfully", 200));
|
||||||
return Ok(new { Message = "Logged out successfully" });
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
// _logger.LogError(ex, "Error during logout");
|
// _logger.LogError(ex, "Error during logout");
|
||||||
return StatusCode(500, new { Message = "Internal server error" });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Internal server error", "Internal server error", 500));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("register")]
|
|
||||||
public async Task<IActionResult> Register([FromBody] RegisterDto registerDto)
|
|
||||||
{
|
|
||||||
var user = new IdentityUser { UserName = registerDto.Username, Email = registerDto.Email };
|
|
||||||
var result = await _userManager.CreateAsync(user, registerDto.Password);
|
|
||||||
|
|
||||||
if (!result.Succeeded)
|
|
||||||
{
|
|
||||||
return BadRequest(result.Errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ok("User registered successfully.");
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("refresh-token")]
|
[HttpPost("refresh-token")]
|
||||||
public async Task<IActionResult> RefreshToken([FromBody] RefreshTokenDto refreshTokenDto)
|
public async Task<IActionResult> RefreshToken([FromBody] RefreshTokenDto refreshTokenDto)
|
||||||
{
|
{
|
||||||
var refreshToken = await _refreshTokenService.GetRefreshToken(refreshTokenDto.RefreshToken);
|
var refreshToken = await _refreshTokenService.GetRefreshToken(refreshTokenDto.RefreshToken);
|
||||||
if (refreshToken == null || refreshToken.ExpiryDate < DateTime.UtcNow)
|
if (refreshToken == null || refreshToken.ExpiryDate < DateTime.UtcNow)
|
||||||
{
|
{
|
||||||
return Unauthorized("Invalid or expired refresh token.");
|
return Unauthorized(ApiResponse<object>.ErrorResponse("Invalid or expired refresh token.", "Invalid or expired refresh token.", 401));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark token as used
|
// Mark token as used
|
||||||
@ -131,7 +117,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
// Generate new JWT token and refresh token
|
// Generate new JWT token and refresh token
|
||||||
var user = await _userManager.FindByIdAsync(refreshToken.UserId);
|
var user = await _userManager.FindByIdAsync(refreshToken.UserId);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
return BadRequest("Invalid request.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid request.", "Invalid request.", 400));
|
||||||
|
|
||||||
Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id);
|
Employee emp = await _employeeHelper.GetEmployeeByApplicationUserID(user.Id);
|
||||||
|
|
||||||
@ -145,7 +131,8 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
public async Task<IActionResult> ForgotPassword([FromBody] ForgotPasswordDto forgotPasswordDto)
|
public async Task<IActionResult> ForgotPassword([FromBody] ForgotPasswordDto forgotPasswordDto)
|
||||||
{
|
{
|
||||||
var user = await _userManager.FindByEmailAsync(forgotPasswordDto.Email);
|
var user = await _userManager.FindByEmailAsync(forgotPasswordDto.Email);
|
||||||
if (user == null) return NotFound("User not found.");
|
if (user == null)
|
||||||
|
return NotFound(ApiResponse<object>.ErrorResponse("User not found.", "User not found.", 404));
|
||||||
|
|
||||||
/* SEND USER REGISTRATION MAIL*/
|
/* SEND USER REGISTRATION MAIL*/
|
||||||
var token = await _userManager.GeneratePasswordResetTokenAsync(user);
|
var token = await _userManager.GeneratePasswordResetTokenAsync(user);
|
||||||
@ -161,7 +148,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
var user = await _userManager.FindByEmailAsync(model.Email);
|
var user = await _userManager.FindByEmailAsync(model.Email);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
return BadRequest("Invalid request.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid request.", "Invalid request.", 400));
|
||||||
|
|
||||||
// var isTokenValid = await _userManager.VerifyUserTokenAsync(user,UserManager<ApplicationUser>.ResetPasswordTokenPurpose, model.ResetCode);
|
// var isTokenValid = await _userManager.VerifyUserTokenAsync(user,UserManager<ApplicationUser>.ResetPasswordTokenPurpose, model.ResetCode);
|
||||||
var isTokenValid = await _userManager.VerifyUserTokenAsync(
|
var isTokenValid = await _userManager.VerifyUserTokenAsync(
|
||||||
@ -181,7 +168,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
model.Token
|
model.Token
|
||||||
);
|
);
|
||||||
if(!isDecodedTokenValid)
|
if(!isDecodedTokenValid)
|
||||||
return BadRequest("Invalid or expired token.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid request.", "Invalid request.", 400));
|
||||||
|
|
||||||
token = model.Token;
|
token = model.Token;
|
||||||
}
|
}
|
||||||
@ -193,13 +180,16 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
var result = await _userManager.ResetPasswordAsync(user, token, model.NewPassword);
|
var result = await _userManager.ResetPasswordAsync(user, token, model.NewPassword);
|
||||||
if (!result.Succeeded)
|
if (!result.Succeeded)
|
||||||
return BadRequest(result.Errors);
|
{
|
||||||
|
var errors = result.Errors.Select(e => e.Description).ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Failed to Change password", errors, 400));
|
||||||
|
}
|
||||||
|
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(result.Succeeded, "Password reset successfully.", 200));
|
return Ok(ApiResponse<object>.SuccessResponse(result.Succeeded, "Password reset successfully.", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("sendmail")]
|
[HttpPost("sendmail")]
|
||||||
public async Task<IActionResult> SendEmail([FromBody] EmailDot emailDot)
|
public async Task<IActionResult> SendEmail([FromBody] EmailDot emailDot)
|
||||||
{
|
{
|
||||||
@ -209,7 +199,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
var user = await _userManager.FindByEmailAsync(emailDot.ToEmail);
|
var user = await _userManager.FindByEmailAsync(emailDot.ToEmail);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
return BadRequest("User not found.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("User not found.", "User not found.", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* New User*/
|
/* New User*/
|
||||||
@ -229,8 +219,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}";
|
var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}";
|
||||||
await _emailSender.SendResetPasswordEmail(user.Email, "", resetLink);
|
await _emailSender.SendResetPasswordEmail(user.Email, "", resetLink);
|
||||||
|
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(new {}, "Password reset link sent.", 200));
|
||||||
return Ok("Password reset link sent.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using System.Data;
|
||||||
|
using System.Net;
|
||||||
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Dtos.Employees;
|
using Marco.Pms.Model.Dtos.Employees;
|
||||||
using Marco.Pms.Model.Employees;
|
using Marco.Pms.Model.Employees;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
@ -12,8 +14,6 @@ using Microsoft.AspNetCore.Authorization;
|
|||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Data;
|
|
||||||
using System.Net;
|
|
||||||
|
|
||||||
namespace MarcoBMS.Services.Controllers
|
namespace MarcoBMS.Services.Controllers
|
||||||
{
|
{
|
||||||
@ -49,7 +49,11 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
}
|
}
|
||||||
int tenantId = GetTenantId();
|
int tenantId = GetTenantId();
|
||||||
|
|
||||||
@ -74,7 +78,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(new List<EmployeeRolesVM>(), "Success.", 200));
|
return BadRequest(ApiResponse<object>.ErrorResponse("This employee has no assigned permissions.", "This employee has no assigned permissions.", 400));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +87,13 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
public async Task<IActionResult> ManageRoles([FromBody] List<EmployeeRoleDot> employeeRoleDots)
|
public async Task<IActionResult> ManageRoles([FromBody] List<EmployeeRoleDot> employeeRoleDots)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return BadRequest(ModelState);
|
{
|
||||||
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
}
|
||||||
|
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
try
|
try
|
||||||
@ -108,6 +118,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse(ex.Message, ex, 400));
|
||||||
}
|
}
|
||||||
return Ok(ApiResponse<object>.SuccessResponse("success", "Roles modified.", 200));
|
return Ok(ApiResponse<object>.SuccessResponse("success", "Roles modified.", 200));
|
||||||
}
|
}
|
||||||
@ -118,7 +129,11 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
}
|
}
|
||||||
var result = await _employeeHelper.GetEmployeeByProjectId(GetTenantId(), projectid);
|
var result = await _employeeHelper.GetEmployeeByProjectId(GetTenantId(), projectid);
|
||||||
|
|
||||||
@ -131,7 +146,12 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
var result = await _employeeHelper.SearchEmployeeByProjectId(GetTenantId(), name.ToLower(), projectid);
|
var result = await _employeeHelper.SearchEmployeeByProjectId(GetTenantId(), name.ToLower(), projectid);
|
||||||
|
|
||||||
@ -144,7 +164,11 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
Employee emp = await _employeeHelper.GetEmployeeByID(employeeId);
|
Employee emp = await _employeeHelper.GetEmployeeByID(employeeId);
|
||||||
@ -168,7 +192,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
public async Task<IActionResult> CreateUser([FromForm] CreateUserDto model)
|
public async Task<IActionResult> CreateUser([FromForm] CreateUserDto model)
|
||||||
{
|
{
|
||||||
if (model == null)
|
if (model == null)
|
||||||
return BadRequest("Invalid user data.");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", "Invaild Data", 400));
|
||||||
|
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
string responsemessage = "";
|
string responsemessage = "";
|
||||||
@ -196,7 +220,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
// Create Employee record if missing
|
// Create Employee record if missing
|
||||||
//Employee newEmployee = GetNewEmployeeModel(model, TenantId, existingUser.Id);
|
//Employee newEmployee = GetNewEmployeeModel(model, TenantId, existingUser.Id);
|
||||||
//_context.Employees.Add(newEmployee);
|
//_context.Employees.Add(newEmployee);
|
||||||
return BadRequest("You cannot use this email");
|
return BadRequest(ApiResponse<object>.ErrorResponse("You cannot use this email", "You cannot use this email", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -213,7 +237,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
// Create Identity User
|
// Create Identity User
|
||||||
var result = await _userManager.CreateAsync(user, "User@123");
|
var result = await _userManager.CreateAsync(user, "User@123");
|
||||||
if (!result.Succeeded)
|
if (!result.Succeeded)
|
||||||
return BadRequest(result.Errors);
|
return Ok(ApiResponse<object>.ErrorResponse("Failed to create user", result.Errors, 400));
|
||||||
|
|
||||||
Employee newEmployee = GetNewEmployeeModel(model, TenantId, user.Id);
|
Employee newEmployee = GetNewEmployeeModel(model, TenantId, user.Id);
|
||||||
_context.Employees.Add(newEmployee);
|
_context.Employees.Add(newEmployee);
|
||||||
@ -250,8 +274,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
responsemessage = "User created successfully.";
|
responsemessage = "User created successfully.";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse("Success.",responsemessage, 200));
|
||||||
return Ok(new { message = responsemessage });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Employee GetNewEmployeeModel(CreateUserDto model, int TenantId, string? ApplicationUserId)
|
private static Employee GetNewEmployeeModel(CreateUserDto model, int TenantId, string? ApplicationUserId)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels;
|
using Marco.Pms.Model.ViewModels;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@ -50,7 +51,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
ModuleName = c.Module.Name,
|
ModuleName = c.Module.Name,
|
||||||
IsActive = c.IsActive
|
IsActive = c.IsActive
|
||||||
});
|
});
|
||||||
return Ok(rolesVM);
|
return Ok(ApiResponse<object>.SuccessResponse(rolesVM, "Success.", 200));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using Marco.Pms.DataAccess.Data;
|
using Marco.Pms.DataAccess.Data;
|
||||||
using Marco.Pms.Model.Dtos.Employees;
|
|
||||||
using Marco.Pms.Model.Utilities;
|
using Marco.Pms.Model.Utilities;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
@ -22,7 +21,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
public async Task<IActionResult> FileUploadDemo([FromForm] DemoEmployeeModel model)
|
public async Task<IActionResult> FileUploadDemo([FromForm] DemoEmployeeModel model)
|
||||||
{
|
{
|
||||||
string imageName = await Saveimage(model.ImageFile);
|
string imageName = await Saveimage(model.ImageFile);
|
||||||
return Ok();
|
return Ok(ApiResponse<object>.SuccessResponse("Success.", "Success.", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
[NonAction]
|
[NonAction]
|
||||||
|
@ -41,11 +41,16 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
List<Project> project = await _context.Projects.Where(c=>c.TenantId == _userHelper.GetTenantId()).ToListAsync();
|
List<Project> project = await _context.Projects.Where(c=>c.TenantId == _userHelper.GetTenantId()).ToListAsync();
|
||||||
|
|
||||||
return Ok(project);
|
return Ok(ApiResponse<object>.SuccessResponse(project, "Success.", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("get/{id:int}")]
|
[HttpGet("get/{id:int}")]
|
||||||
@ -53,12 +58,17 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var project = await _context.Projects.Where(c => c.TenantId == _userHelper.GetTenantId() && c.Id == id).SingleOrDefaultAsync();
|
var project = await _context.Projects.Where(c => c.TenantId == _userHelper.GetTenantId() && c.Id == id).SingleOrDefaultAsync();
|
||||||
|
|
||||||
return Ok(project);
|
return Ok(ApiResponse<object>.SuccessResponse(project, "Success.", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("details/{id:int}")]
|
[HttpGet("details/{id:int}")]
|
||||||
@ -68,14 +78,19 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
|
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var project = await _context.Projects.Where(c => c.TenantId == _userHelper.GetTenantId() && c.Id == id).Include(c=> c.ProjectStatus).SingleOrDefaultAsync(); // includeProperties: "ProjectStatus,Tenant"); //_context.Stock.FindAsync(id);
|
var project = await _context.Projects.Where(c => c.TenantId == _userHelper.GetTenantId() && c.Id == id).Include(c=> c.ProjectStatus).SingleOrDefaultAsync(); // includeProperties: "ProjectStatus,Tenant"); //_context.Stock.FindAsync(id);
|
||||||
|
|
||||||
if (project == null)
|
if (project == null)
|
||||||
{
|
{
|
||||||
return Ok(new ProjectVM());
|
return NotFound(ApiResponse<object>.ErrorResponse("Project not found", "Project not found", 404));
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -124,8 +139,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
projectVM.Buildings.Add(buildVM);
|
projectVM.Buildings.Add(buildVM);
|
||||||
}
|
}
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(projectVM, "Success.", 200));
|
||||||
return Ok(projectVM);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -170,7 +184,12 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
@ -189,7 +208,12 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -206,7 +230,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return Ok(null);
|
return BadRequest(ApiResponse<object>.ErrorResponse(ex.Message, ex, 400));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,7 +286,12 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
|
|
||||||
@ -297,7 +326,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Ok(ApiResponse<object>.ErrorResponse("Invalid Input Parameter", 422));
|
return NotFound(ApiResponse<object>.ErrorResponse("Invalid Input Parameter", 404));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -309,7 +338,12 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
|
|
||||||
@ -378,14 +412,14 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex) { }
|
catch (Exception ex) {
|
||||||
|
return Ok(ApiResponse<object>.ErrorResponse(ex.Message,ex, 400));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(null, "Data saved successfully.", 200));
|
return Ok(ApiResponse<object>.SuccessResponse(null, "Data saved successfully.", 200));
|
||||||
|
|
||||||
}
|
}
|
||||||
return BadRequest(ApiResponse<string>.ErrorResponse("Invalid details.", new { id = "Work Item Details are not valid." }, 400));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid details.", "Work Item Details are not valid." , 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -416,7 +450,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
return Ok(ApiResponse<object>.SuccessResponse(null, "Data saved successfully.", 200));
|
return Ok(ApiResponse<object>.SuccessResponse(null, "Data saved successfully.", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
return BadRequest(ApiResponse<string>.ErrorResponse("Invalid details.", new { id = "Work Item Details are not valid." }, 400));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid details.", "Work Item Details are not valid.", 400));
|
||||||
|
|
||||||
}
|
}
|
||||||
[HttpPost("manage-infra")]
|
[HttpPost("manage-infra")]
|
||||||
@ -483,10 +517,11 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(null, "Data saved successfully.", 200));
|
||||||
}
|
}
|
||||||
return Ok();
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid details.", "Infra Details are not valid.", 400));
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Identity;
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
namespace MarcoBMS.Services.Controllers
|
namespace MarcoBMS.Services.Controllers
|
||||||
{
|
{
|
||||||
@ -49,8 +50,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
Name = x.Name,
|
Name = x.Name,
|
||||||
Description = x.Description
|
Description = x.Description
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
return Ok(ApiResponse<object>.SuccessResponse(roles, "Success.", 200));
|
||||||
return Ok(roles);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("jobrole")]
|
[HttpPost("jobrole")]
|
||||||
@ -61,7 +61,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
if (await _context.JobRoles.AnyAsync(c => c.Name.ToLower() == createJobRoleDto.Name.ToLower() && c.TenantId == TenantId))
|
if (await _context.JobRoles.AnyAsync(c => c.Name.ToLower() == createJobRoleDto.Name.ToLower() && c.TenantId == TenantId))
|
||||||
{
|
{
|
||||||
return Ok(ApiResponse<object>.SuccessResponse(null, "Role with same name already Exists.", 200));
|
return BadRequest(ApiResponse<object>.ErrorResponse("Role with same name already Exists.", "Role with same name already Exists.", 400));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -77,10 +77,14 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
}
|
}
|
||||||
if (id != updateRoleDto.Id.ToString())
|
if (id != updateRoleDto.Id.ToString())
|
||||||
return BadRequest("Role ID mismatch");
|
return BadRequest(ApiResponse<object>.ErrorResponse("Role ID mismatch", "Role ID mismatch",400));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -94,7 +98,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return Ok(null);
|
return BadRequest(ApiResponse<object>.ErrorResponse(ex.Message, ex, 400));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,20 +171,26 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
public async Task<IActionResult> AddRole([FromBody] CreateApplicationRoleDto createRoleDto)
|
public async Task<IActionResult> AddRole([FromBody] CreateApplicationRoleDto createRoleDto)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return BadRequest(ModelState);
|
{
|
||||||
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
|
}
|
||||||
|
|
||||||
int TenantId = GetTenantId();
|
int TenantId = GetTenantId();
|
||||||
|
|
||||||
if (createRoleDto.FeaturesPermission == null || (createRoleDto.FeaturesPermission != null && createRoleDto.FeaturesPermission.Count == 0))
|
if (createRoleDto.FeaturesPermission == null || (createRoleDto.FeaturesPermission != null && createRoleDto.FeaturesPermission.Count == 0))
|
||||||
{
|
{
|
||||||
return BadRequest(new { Message = "Feature Permission is required." });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Feature Permission is required.", "Feature Permission is required.", 400));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool roleExists = _context.ApplicationRoles
|
bool roleExists = _context.ApplicationRoles
|
||||||
.Any(r => r.TenantId == TenantId && r.Role.ToLower() == createRoleDto.Role.ToLower());// assuming role name is unique per tenant
|
.Any(r => r.TenantId == TenantId && r.Role.ToLower() == createRoleDto.Role.ToLower());// assuming role name is unique per tenant
|
||||||
if (roleExists)
|
if (roleExists)
|
||||||
{
|
{
|
||||||
return BadRequest(new {message = "Role already exists." });
|
return BadRequest(ApiResponse<object>.ErrorResponse("Role already exists.", "Role already exists.", 400));
|
||||||
}
|
}
|
||||||
ApplicationRole role = createRoleDto.ToApplicationRoleFromCreateDto(TenantId);
|
ApplicationRole role = createRoleDto.ToApplicationRoleFromCreateDto(TenantId);
|
||||||
_context.ApplicationRoles.Add(role);
|
_context.ApplicationRoles.Add(role);
|
||||||
@ -196,7 +206,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
return CreatedAtAction(nameof(GetRoleById), new { id = role.Id }, role.ToRoleVMFromApplicationRole());
|
return Ok(ApiResponse<object>.SuccessResponse(role.ToRoleVMFromApplicationRole(), "Roles created successfully.", 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{id}")]
|
||||||
@ -204,7 +214,11 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
return BadRequest(ModelState);
|
var errors = ModelState.Values
|
||||||
|
.SelectMany(v => v.Errors)
|
||||||
|
.Select(e => e.ErrorMessage)
|
||||||
|
.ToList();
|
||||||
|
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||||
}
|
}
|
||||||
if (id != updateRoleDto.Id.ToString())
|
if (id != updateRoleDto.Id.ToString())
|
||||||
return BadRequest("Role ID mismatch");
|
return BadRequest("Role ID mismatch");
|
||||||
@ -217,13 +231,13 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
ApplicationRole role = updateRoleDto.ToApplicationRoleFromUpdateDto(TenantId);
|
ApplicationRole role = updateRoleDto.ToApplicationRoleFromUpdateDto(TenantId);
|
||||||
|
|
||||||
if (role.TenantId != TenantId)
|
if (role.TenantId != TenantId)
|
||||||
return Unauthorized();
|
return Unauthorized(ApiResponse<object>.ErrorResponse("You don't have any authority to update role", "You don't have any authority to update role", 401));
|
||||||
|
|
||||||
var projectModel = _context.ApplicationRoles.Update(role);
|
var projectModel = _context.ApplicationRoles.Update(role);
|
||||||
|
|
||||||
if (projectModel == null)
|
if (projectModel == null)
|
||||||
{
|
{
|
||||||
return NotFound("Project not found");
|
return NotFound(ApiResponse<object>.ErrorResponse("Project not found", "Project not found",404));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool modified = false;
|
bool modified = false;
|
||||||
@ -253,7 +267,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return Ok(ApiResponse<object>.ErrorResponse( "RUnable to update roles perimssions.", 200));
|
return BadRequest(ApiResponse<object>.ErrorResponse(ex.Message,ex, 400));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,10 +280,10 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
var role = await _context.ApplicationRoles.FindAsync(id);
|
var role = await _context.ApplicationRoles.FindAsync(id);
|
||||||
|
|
||||||
if (role == null)
|
if (role == null)
|
||||||
return NotFound();
|
return NotFound(ApiResponse<object>.ErrorResponse("Role not found", "Role not found", 404));
|
||||||
|
|
||||||
if (role.TenantId != TenantId)
|
if (role.TenantId != TenantId)
|
||||||
return Unauthorized();
|
return Unauthorized(ApiResponse<object>.ErrorResponse("You don't have any authority", "You don't have any authority", 401));
|
||||||
|
|
||||||
var featurePermissions = await _context.RolePermissionMappings
|
var featurePermissions = await _context.RolePermissionMappings
|
||||||
.Where(rfp => rfp.ApplicationRoleId == id)
|
.Where(rfp => rfp.ApplicationRoleId == id)
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using Marco.Pms.Model.Entitlements;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using Marco.Pms.Model.Mapper;
|
using Marco.Pms.Model.Mapper;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
|
using Marco.Pms.Model.Utilities;
|
||||||
using Marco.Pms.Model.ViewModels.Employee;
|
using Marco.Pms.Model.ViewModels.Employee;
|
||||||
using MarcoBMS.Services.Helpers;
|
using MarcoBMS.Services.Helpers;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
@ -65,7 +66,7 @@ namespace MarcoBMS.Services.Controllers
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
return Ok(profile);
|
return Ok(ApiResponse<object>.SuccessResponse(profile, "Success", 200));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user