Created new view model for get projet list API

This commit is contained in:
ashutosh.nehete 2025-04-09 12:16:41 +05:30
parent 15e83346e2
commit db879495cb
4 changed files with 71 additions and 13 deletions

View File

@ -1,5 +1,6 @@
using Marco.Pms.Model.Dtos.Project;
using Marco.Pms.Model.Projects;
using Marco.Pms.Model.ViewModels;
namespace Marco.Pms.Model.Mapper
{
@ -61,6 +62,19 @@ namespace Marco.Pms.Model.Mapper
};
}
public static ProjectListVM ToProjectListVMFromProject(this Project project)
{
return new ProjectListVM
{
Id = project.Id,
Name = project.Name,
ProjectAddress = project.ProjectAddress,
ProjectStatusId = project.ProjectStatusId,
ContactPerson = project.ContactPerson,
StartDate = project.StartDate,
EndDate = project.EndDate,
TenantId = project.TenantId
};
}
}
}

View File

@ -1,14 +1,8 @@
using Marco.Pms.Model.Entitlements;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Marco.Pms.Model.Entitlements;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
namespace Marco.Pms.Model.Projects
{

View File

@ -0,0 +1,18 @@
namespace Marco.Pms.Model.ViewModels
{
public class ProjectListVM
{
public int Id { get; set; }
public string? Name { get; set; }
public string? ProjectAddress { get; set; }
public string? ContactPerson { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int ProjectStatusId { get; set; }
public int TenantId { get; set; }
public int TeamSize { get; set; }
public double CompletedWork { get; set; }
public double PlannedWork { get; set; }
}
}

View File

@ -48,11 +48,43 @@ namespace MarcoBMS.Services.Controllers
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
}
List<Project> project = await _context.Projects.Where(c=>c.TenantId == _userHelper.GetTenantId()).ToListAsync();
var tenantId = _userHelper.GetTenantId();
List<Project> projects = await _context.Projects.Where(c=>c.TenantId == _userHelper.GetTenantId()).ToListAsync();
return Ok(ApiResponse<object>.SuccessResponse(project, "Success.", 200));
List<ProjectListVM> response = new List<ProjectListVM>();
foreach (var project in projects)
{
var result = project.ToProjectListVMFromProject();
var team = await _context.ProjectAllocations.Where(p => p.TenantId == tenantId && p.ProjectId == project.Id && p.IsActive == true).ToListAsync();
result.TeamSize = team.Count();
List<Building> buildings = await _context.Buildings.Where(b => b.ProjectId == project.Id && b.TenantId == tenantId).ToListAsync();
List<int> idList = buildings.Select(b => b.Id).ToList();
List<Floor> floors = await _context.Floor.Where(f => idList.Contains(f.BuildingId) && f.TenantId == tenantId).ToListAsync();
idList = floors.Select(f => f.Id).ToList();
List<WorkArea> workAreas = await _context.WorkAreas.Where(a => idList.Contains(a.FloorId) && a.TenantId == tenantId).ToListAsync();
idList = workAreas.Select(a => a.Id).ToList();
List<WorkItem> workItems = await _context.WorkItems.Where(i => idList.Contains(i.WorkAreaId) && i.TenantId == tenantId).Include(i => i.ActivityMaster).ToListAsync();
double completedTask = 0;
double plannedTask = 0;
foreach (var workItem in workItems)
{
completedTask += workItem.CompletedWork;
plannedTask += workItem.PlannedWork;
}
result.PlannedWork = plannedTask;
result.CompletedWork = completedTask;
response.Add(result);
}
return Ok(ApiResponse<object>.SuccessResponse(response, "Success.", 200));
}
[HttpGet("get/{id:int}")]
public async Task<IActionResult> Get([FromRoute] int id)
{