Created new view model for get projet list API
This commit is contained in:
parent
15e83346e2
commit
db879495cb
@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
{
|
||||
|
18
Marco.Pms.Model/ViewModels/ProjectListVM.cs
Normal file
18
Marco.Pms.Model/ViewModels/ProjectListVM.cs
Normal 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; }
|
||||
}
|
||||
}
|
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user