134 lines
6.1 KiB
C#
134 lines
6.1 KiB
C#
using Marco.Pms.DataAccess.Data;
|
|
using Marco.Pms.Model.Dtos.Activities;
|
|
using Marco.Pms.Model.Entitlements;
|
|
using Marco.Pms.Model.Mapper;
|
|
using Marco.Pms.Model.Utilities;
|
|
using MarcoBMS.Services.Helpers;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Marco.Pms.Services.Controllers
|
|
{
|
|
[Authorize]
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class MasterController : ControllerBase
|
|
{
|
|
private readonly ApplicationDbContext _context;
|
|
private readonly UserHelper _userHelper;
|
|
public MasterController(ApplicationDbContext context,UserHelper userHelper)
|
|
{
|
|
_context = context;
|
|
_userHelper = userHelper;
|
|
}
|
|
[HttpGet]
|
|
[Route("activities")]
|
|
public async Task<IActionResult> GetActivitiesMaster()
|
|
{
|
|
var tenantId = _userHelper.GetTenantId();
|
|
var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId).ToListAsync();
|
|
return Ok(ApiResponse<object>.SuccessResponse(activities, "Success.", 200));
|
|
}
|
|
|
|
[HttpPost("activity")]
|
|
public async Task<IActionResult> CreateActivity([FromBody] CreateActivityMasterDto createActivity)
|
|
{
|
|
var tenantId = _userHelper.GetTenantId();
|
|
var employee = await _userHelper.GetCurrentEmployeeAsync();
|
|
if(employee.TenantId != tenantId)
|
|
{
|
|
return Unauthorized(ApiResponse<object>.ErrorResponse("Current tenant did not match with user's tenant", "Current tenant did not match with user's tenant",401));
|
|
}
|
|
var activityMaster = createActivity.ToActivityMasterFromCreateActivityMasterDto(tenantId);
|
|
_context.ActivityMasters.Add(activityMaster);
|
|
await _context.SaveChangesAsync();
|
|
|
|
if (createActivity.CheckList != null) {
|
|
List<ActivityCheckList> activityCheckList = new List<ActivityCheckList>();
|
|
foreach (var check in createActivity.CheckList)
|
|
{
|
|
ActivityCheckList checkList = new ActivityCheckList
|
|
{
|
|
ActivityMasterId = activityMaster.Id,
|
|
TenantId = tenantId,
|
|
CheckList = check
|
|
};
|
|
activityCheckList.Add(checkList);
|
|
}
|
|
//_context.ActivityCheckList.AddRange(activityCheckList);
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
return Ok(ApiResponse<object>.SuccessResponse(activityMaster, "Activity created successfully", 200));
|
|
}
|
|
|
|
[HttpPost("edit{id}")]
|
|
public async Task<IActionResult> UpdateActivity(int id, [FromBody] CreateActivityMasterDto createActivity)
|
|
{
|
|
var tenantId = _userHelper.GetTenantId();
|
|
var employee = await _userHelper.GetCurrentEmployeeAsync();
|
|
ActivityMaster? activity = await _context.ActivityMasters.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (activity != null && createActivity.UnitOfMeasurement != null) {
|
|
activity.ActivityName = activity.ActivityName;
|
|
activity.UnitOfMeasurement = createActivity.UnitOfMeasurement;
|
|
activity.TenantId = tenantId;
|
|
await _context.SaveChangesAsync();
|
|
|
|
if (createActivity.CheckList != null)
|
|
{
|
|
List<ActivityCheckList> activityCheckList = new List<ActivityCheckList>();
|
|
foreach (var check in createActivity.CheckList)
|
|
{
|
|
ActivityCheckList checkList = new ActivityCheckList
|
|
{
|
|
ActivityMasterId = activity.Id,
|
|
TenantId = tenantId,
|
|
CheckList = check
|
|
};
|
|
activityCheckList.Add(checkList);
|
|
}
|
|
//_context.ActivityCheckList.UpdateRange(activityCheckList);
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
return Ok(ApiResponse<object>.SuccessResponse(activity, "Activity updated successfully", 200));
|
|
}
|
|
|
|
return NotFound(ApiResponse<object>.ErrorResponse("Activity no found", "Activity no found", 404));
|
|
}
|
|
|
|
[HttpPost("edit{id}")]
|
|
public async Task<IActionResult> UpdateActivity(int id, [FromBody] CreateActivityMasterDto createActivity)
|
|
{
|
|
var tenantId = _userHelper.GetTenantId();
|
|
var employee = await _userHelper.GetCurrentEmployeeAsync();
|
|
ActivityMaster? activity = await _context.ActivityMasters.FirstOrDefaultAsync(x => x.Id == id);
|
|
if (activity != null && createActivity.UnitOfMeasurement != null) {
|
|
activity.ActivityName = activity.ActivityName;
|
|
activity.UnitOfMeasurement = createActivity.UnitOfMeasurement;
|
|
activity.TenantId = tenantId;
|
|
await _context.SaveChangesAsync();
|
|
|
|
if (createActivity.CheckList != null)
|
|
{
|
|
List<ActivityCheckList> activityCheckList = new List<ActivityCheckList>();
|
|
foreach (var check in createActivity.CheckList)
|
|
{
|
|
ActivityCheckList checkList = new ActivityCheckList
|
|
{
|
|
ActivityMasterId = activity.Id,
|
|
TenantId = tenantId,
|
|
CheckList = check
|
|
};
|
|
activityCheckList.Add(checkList);
|
|
}
|
|
//_context.ActivityCheckList.UpdateRange(activityCheckList);
|
|
await _context.SaveChangesAsync();
|
|
}
|
|
return Ok(ApiResponse<object>.SuccessResponse(activity, "Activity updated successfully", 200));
|
|
}
|
|
|
|
return NotFound(ApiResponse<object>.ErrorResponse("Activity no found", "Activity no found", 404));
|
|
}
|
|
}
|
|
}
|