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.Dtos.Project;
|
||||||
using Marco.Pms.Model.Projects;
|
using Marco.Pms.Model.Projects;
|
||||||
|
using Marco.Pms.Model.ViewModels;
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Mapper
|
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 System.ComponentModel;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Linq;
|
using Marco.Pms.Model.Entitlements;
|
||||||
using System.Text;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Marco.Pms.Model.Projects
|
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));
|
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}")]
|
[HttpGet("get/{id:int}")]
|
||||||
public async Task<IActionResult> Get([FromRoute] int id)
|
public async Task<IActionResult> Get([FromRoute] int id)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user