From 81d487f9f2ede5ff8c5ad1b0d2d30937472a64d4 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 10 Apr 2025 19:16:21 +0530 Subject: [PATCH 1/6] Created new Api for creating and editing activities --- .../Controllers/MasterController.cs | 28 +++++++++++++++++++ .../Controllers/TaskController.cs | 11 -------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index c52ecc5..204d37b 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -1,10 +1,12 @@ 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 { @@ -20,6 +22,15 @@ namespace Marco.Pms.Services.Controllers _context = context; _userHelper = userHelper; } + [HttpGet] + [Route("activities")] + public async Task GetActivitiesMaster() + { + var tenantId = _userHelper.GetTenantId(); + var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId).ToListAsync(); + return Ok(ApiResponse.SuccessResponse(activities, "Success.", 200)); + } + [HttpPost("activity")] public async Task CreateActivity([FromBody] CreateActivityMasterDto createActivity) { @@ -34,5 +45,22 @@ namespace Marco.Pms.Services.Controllers await _context.SaveChangesAsync(); return Ok(ApiResponse.SuccessResponse(activityMaster, "Activity created successfully", 200)); } + + [HttpPost("edit{id}")] + public async Task 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) { + activity.ActivityName = activity.ActivityName; + activity.UnitOfMeasurement = createActivity.UnitOfMeasurement; + activity.TenantId = tenantId; + await _context.SaveChangesAsync(); + return Ok(ApiResponse.SuccessResponse(activity, "Activity updated successfully", 200)); + } + + return NotFound(ApiResponse.ErrorResponse("Activity no found", "Activity no found", 404)); + } } } diff --git a/Marco.Pms.Services/Controllers/TaskController.cs b/Marco.Pms.Services/Controllers/TaskController.cs index f7eb3f3..721138e 100644 --- a/Marco.Pms.Services/Controllers/TaskController.cs +++ b/Marco.Pms.Services/Controllers/TaskController.cs @@ -35,17 +35,6 @@ namespace MarcoBMS.Services.Controllers return _userHelper.GetTenantId(); } - [HttpGet] - [Route("activities")] - public async Task GetActivitiesMaster() - { - var tenantId = GetTenantId(); - var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId).ToListAsync(); - return Ok(ApiResponse.SuccessResponse(activities, "Success.", 200)); - } - - - [HttpPost("assign")] public async Task AssignTask([FromBody] AssignTaskDto assignTask) { From 90b5152bb2ad7839913901b927662d42501d94d2 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 10 Apr 2025 19:56:30 +0530 Subject: [PATCH 2/6] Added CheckList to Update and Create API --- .../Activities/CreateActivityMasterDto.cs | 9 +++-- .../Entitlements/ActivityCheckList.cs | 10 ++++++ .../Controllers/MasterController.cs | 35 ++++++++++++++++++- 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 Marco.Pms.Model/Entitlements/ActivityCheckList.cs diff --git a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs index 74913d7..9961661 100644 --- a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs @@ -1,10 +1,9 @@ -using System.ComponentModel; - -namespace Marco.Pms.Model.Dtos.Activities +namespace Marco.Pms.Model.Dtos.Activities { public class CreateActivityMasterDto { - public string ActivityName { get; set; } - public string UnitOfMeasurement { get; set; } + public string? ActivityName { get; set; } + public string? UnitOfMeasurement { get; set; } + public List? CheckList { get; set; } } } diff --git a/Marco.Pms.Model/Entitlements/ActivityCheckList.cs b/Marco.Pms.Model/Entitlements/ActivityCheckList.cs new file mode 100644 index 0000000..aa2637b --- /dev/null +++ b/Marco.Pms.Model/Entitlements/ActivityCheckList.cs @@ -0,0 +1,10 @@ +namespace Marco.Pms.Model.Entitlements +{ + public class ActivityCheckList + { + public int Id { get; set; } + public int ActivityMasterId { get; set; } + public string? CheckList { get; set; } + public int TenantId { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 204d37b..1096484 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -43,6 +43,22 @@ namespace Marco.Pms.Services.Controllers var activityMaster = createActivity.ToActivityMasterFromCreateActivityMasterDto(tenantId); _context.ActivityMasters.Add(activityMaster); await _context.SaveChangesAsync(); + + if (createActivity.CheckList != null) { + List activityCheckList = new List(); + 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.SuccessResponse(activityMaster, "Activity created successfully", 200)); } @@ -52,11 +68,28 @@ namespace Marco.Pms.Services.Controllers var tenantId = _userHelper.GetTenantId(); var employee = await _userHelper.GetCurrentEmployeeAsync(); ActivityMaster? activity = await _context.ActivityMasters.FirstOrDefaultAsync(x => x.Id == id); - if (activity != null) { + 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 = new List(); + 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.SuccessResponse(activity, "Activity updated successfully", 200)); } From e53d45ed77ffa29904936cfdbad1559c021719bc Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 10 Apr 2025 19:16:21 +0530 Subject: [PATCH 3/6] Created new Api for creating and editing activities --- .../Controllers/MasterController.cs | 28 +++++++++++++++++++ .../Controllers/TaskController.cs | 11 -------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index c52ecc5..204d37b 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -1,10 +1,12 @@ 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 { @@ -20,6 +22,15 @@ namespace Marco.Pms.Services.Controllers _context = context; _userHelper = userHelper; } + [HttpGet] + [Route("activities")] + public async Task GetActivitiesMaster() + { + var tenantId = _userHelper.GetTenantId(); + var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId).ToListAsync(); + return Ok(ApiResponse.SuccessResponse(activities, "Success.", 200)); + } + [HttpPost("activity")] public async Task CreateActivity([FromBody] CreateActivityMasterDto createActivity) { @@ -34,5 +45,22 @@ namespace Marco.Pms.Services.Controllers await _context.SaveChangesAsync(); return Ok(ApiResponse.SuccessResponse(activityMaster, "Activity created successfully", 200)); } + + [HttpPost("edit{id}")] + public async Task 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) { + activity.ActivityName = activity.ActivityName; + activity.UnitOfMeasurement = createActivity.UnitOfMeasurement; + activity.TenantId = tenantId; + await _context.SaveChangesAsync(); + return Ok(ApiResponse.SuccessResponse(activity, "Activity updated successfully", 200)); + } + + return NotFound(ApiResponse.ErrorResponse("Activity no found", "Activity no found", 404)); + } } } diff --git a/Marco.Pms.Services/Controllers/TaskController.cs b/Marco.Pms.Services/Controllers/TaskController.cs index f7eb3f3..721138e 100644 --- a/Marco.Pms.Services/Controllers/TaskController.cs +++ b/Marco.Pms.Services/Controllers/TaskController.cs @@ -35,17 +35,6 @@ namespace MarcoBMS.Services.Controllers return _userHelper.GetTenantId(); } - [HttpGet] - [Route("activities")] - public async Task GetActivitiesMaster() - { - var tenantId = GetTenantId(); - var activities = await _context.ActivityMasters.Where(c => c.TenantId == tenantId).ToListAsync(); - return Ok(ApiResponse.SuccessResponse(activities, "Success.", 200)); - } - - - [HttpPost("assign")] public async Task AssignTask([FromBody] AssignTaskDto assignTask) { From 3702dae1ac3585ff04c1e8dbd59d77813402325b Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 10 Apr 2025 19:56:30 +0530 Subject: [PATCH 4/6] Added CheckList to Update and Create API --- .../Activities/CreateActivityMasterDto.cs | 9 +++-- .../Entitlements/ActivityCheckList.cs | 10 ++++++ .../Controllers/MasterController.cs | 35 ++++++++++++++++++- 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 Marco.Pms.Model/Entitlements/ActivityCheckList.cs diff --git a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs index 74913d7..9961661 100644 --- a/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs +++ b/Marco.Pms.Model/Dtos/Activities/CreateActivityMasterDto.cs @@ -1,10 +1,9 @@ -using System.ComponentModel; - -namespace Marco.Pms.Model.Dtos.Activities +namespace Marco.Pms.Model.Dtos.Activities { public class CreateActivityMasterDto { - public string ActivityName { get; set; } - public string UnitOfMeasurement { get; set; } + public string? ActivityName { get; set; } + public string? UnitOfMeasurement { get; set; } + public List? CheckList { get; set; } } } diff --git a/Marco.Pms.Model/Entitlements/ActivityCheckList.cs b/Marco.Pms.Model/Entitlements/ActivityCheckList.cs new file mode 100644 index 0000000..aa2637b --- /dev/null +++ b/Marco.Pms.Model/Entitlements/ActivityCheckList.cs @@ -0,0 +1,10 @@ +namespace Marco.Pms.Model.Entitlements +{ + public class ActivityCheckList + { + public int Id { get; set; } + public int ActivityMasterId { get; set; } + public string? CheckList { get; set; } + public int TenantId { get; set; } + } +} diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 204d37b..1096484 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -43,6 +43,22 @@ namespace Marco.Pms.Services.Controllers var activityMaster = createActivity.ToActivityMasterFromCreateActivityMasterDto(tenantId); _context.ActivityMasters.Add(activityMaster); await _context.SaveChangesAsync(); + + if (createActivity.CheckList != null) { + List activityCheckList = new List(); + 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.SuccessResponse(activityMaster, "Activity created successfully", 200)); } @@ -52,11 +68,28 @@ namespace Marco.Pms.Services.Controllers var tenantId = _userHelper.GetTenantId(); var employee = await _userHelper.GetCurrentEmployeeAsync(); ActivityMaster? activity = await _context.ActivityMasters.FirstOrDefaultAsync(x => x.Id == id); - if (activity != null) { + 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 = new List(); + 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.SuccessResponse(activity, "Activity updated successfully", 200)); } From 3fabadc380cd76dcfcb1cb7a9310d2664204f13b Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Fri, 11 Apr 2025 16:40:57 +0530 Subject: [PATCH 5/6] Added the date filter while fetching data from database --- Marco.Pms.Services/Controllers/DashboardController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marco.Pms.Services/Controllers/DashboardController.cs b/Marco.Pms.Services/Controllers/DashboardController.cs index d6b7fc8..4676dd1 100644 --- a/Marco.Pms.Services/Controllers/DashboardController.cs +++ b/Marco.Pms.Services/Controllers/DashboardController.cs @@ -44,7 +44,7 @@ namespace Marco.Pms.Services.Controllers toDate = fromDate.AddDays(negativeDays); if (projectId == 0) { - List tasks = await _context.TaskAllocations.Where(t => t.AssignmentDate <= fromDate && t.AssignmentDate >= toDate && t.TenantId == tenantId).ToListAsync(); + List tasks = await _context.TaskAllocations.Where(t => t.AssignmentDate.Date <= fromDate.Date && t.AssignmentDate.Date >= toDate.Date && t.TenantId == tenantId).ToListAsync(); double flagDays = 0; while (negativeDays < flagDays) @@ -85,7 +85,7 @@ namespace Marco.Pms.Services.Controllers List workItems = await _context.WorkItems.Where(i => idList.Contains(i.WorkAreaId) && i.TenantId == tenantId).ToListAsync(); idList = workItems.Select(i => i.Id).ToList(); - List tasks = await _context.TaskAllocations.Where(t => idList.Contains(t.WorkItemId) && t.AssignmentDate <= fromDate && t.AssignmentDate >= toDate && t.TenantId == tenantId).ToListAsync(); + List tasks = await _context.TaskAllocations.Where(t => idList.Contains(t.WorkItemId) && t.AssignmentDate.Date <= fromDate.Date && t.AssignmentDate.Date >= toDate.Date && t.TenantId == tenantId).ToListAsync(); if(project != null) { double flagDays = 0; From b8e2c265be7fd2358b3705509eab25d52cd1c3f7 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Fri, 11 Apr 2025 17:19:32 +0530 Subject: [PATCH 6/6] Fixed code error --- Marco.Pms.Services/Controllers/MasterController.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 1096484..16cb1c9 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -62,14 +62,14 @@ namespace Marco.Pms.Services.Controllers return Ok(ApiResponse.SuccessResponse(activityMaster, "Activity created successfully", 200)); } - [HttpPost("edit{id}")] + [HttpPost("edit/{id}")] public async Task 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; + if (activity != null && createActivity.UnitOfMeasurement != null && createActivity.ActivityName != null) { + activity.ActivityName = createActivity.ActivityName; activity.UnitOfMeasurement = createActivity.UnitOfMeasurement; activity.TenantId = tenantId; await _context.SaveChangesAsync();