Added old project Details API
This commit is contained in:
parent
0be200e77a
commit
3ec4bd762f
10
Marco.Pms.Model/ViewModels/Projects/OldProjectVM.cs
Normal file
10
Marco.Pms.Model/ViewModels/Projects/OldProjectVM.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using Marco.Pms.Model.Dtos.Project;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Projects
|
||||
{
|
||||
public class OldProjectVM : ProjectDto
|
||||
{
|
||||
public List<BuildingVM>? Buildings { get; set; }
|
||||
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
using Marco.Pms.DataAccess.Data;
|
||||
using Marco.Pms.Model.Activities;
|
||||
using Marco.Pms.Model.Dtos.Project;
|
||||
using Marco.Pms.Model.Employees;
|
||||
using Marco.Pms.Model.Entitlements;
|
||||
using Marco.Pms.Model.Mapper;
|
||||
using Marco.Pms.Model.Master;
|
||||
using Marco.Pms.Model.MongoDBModels;
|
||||
@ -288,6 +290,138 @@ namespace MarcoBMS.Services.Controllers
|
||||
};
|
||||
}
|
||||
|
||||
[HttpGet("details-old/{id}")]
|
||||
public async Task<IActionResult> DetailsOld([FromRoute] Guid id)
|
||||
{
|
||||
// ProjectDetailsVM vm = new ProjectDetailsVM();
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
var errors = ModelState.Values
|
||||
.SelectMany(v => v.Errors)
|
||||
.Select(e => e.ErrorMessage)
|
||||
.ToList();
|
||||
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", errors, 400));
|
||||
|
||||
}
|
||||
|
||||
var project = await _context.Projects.Where(c => c.TenantId == _userHelper.GetTenantId() && c.Id == id).Include(c => c.ProjectStatus).SingleOrDefaultAsync(); // includeProperties: "ProjectStatus,Tenant"); //_context.Stock.FindAsync(id);
|
||||
|
||||
if (project == null)
|
||||
{
|
||||
return NotFound(ApiResponse<object>.ErrorResponse("Project not found", "Project not found", 404));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//var project = projects.Where(c => c.Id == id).SingleOrDefault();
|
||||
ProjectDetailsVM vm = await GetProjectViewModel(id, project);
|
||||
|
||||
OldProjectVM projectVM = new OldProjectVM();
|
||||
if (vm.project != null)
|
||||
{
|
||||
projectVM.Id = vm.project.Id;
|
||||
projectVM.Name = vm.project.Name;
|
||||
projectVM.ShortName = vm.project.ShortName;
|
||||
projectVM.ProjectAddress = vm.project.ProjectAddress;
|
||||
projectVM.ContactPerson = vm.project.ContactPerson;
|
||||
projectVM.StartDate = vm.project.StartDate;
|
||||
projectVM.EndDate = vm.project.EndDate;
|
||||
projectVM.ProjectStatusId = vm.project.ProjectStatusId;
|
||||
}
|
||||
projectVM.Buildings = new List<BuildingVM>();
|
||||
if (vm.buildings != null)
|
||||
{
|
||||
foreach (Building build in vm.buildings)
|
||||
{
|
||||
BuildingVM buildVM = new BuildingVM() { Id = build.Id, Description = build.Description, Name = build.Name };
|
||||
buildVM.Floors = new List<FloorsVM>();
|
||||
if (vm.floors != null)
|
||||
{
|
||||
foreach (Floor floorDto in vm.floors.Where(c => c.BuildingId == build.Id).ToList())
|
||||
{
|
||||
FloorsVM floorVM = new FloorsVM() { FloorName = floorDto.FloorName, Id = floorDto.Id };
|
||||
floorVM.WorkAreas = new List<WorkAreaVM>();
|
||||
|
||||
if (vm.workAreas != null)
|
||||
{
|
||||
foreach (WorkArea workAreaDto in vm.workAreas.Where(c => c.FloorId == floorVM.Id).ToList())
|
||||
{
|
||||
WorkAreaVM workAreaVM = new WorkAreaVM() { Id = workAreaDto.Id, AreaName = workAreaDto.AreaName, WorkItems = new List<WorkItemVM>() };
|
||||
|
||||
if (vm.workItems != null)
|
||||
{
|
||||
foreach (WorkItem workItemDto in vm.workItems.Where(c => c.WorkAreaId == workAreaDto.Id).ToList())
|
||||
{
|
||||
WorkItemVM workItemVM = new WorkItemVM() { WorkItemId = workItemDto.Id, WorkItem = workItemDto };
|
||||
|
||||
workItemVM.WorkItem.WorkArea = new WorkArea();
|
||||
|
||||
if (workItemVM.WorkItem.ActivityMaster != null)
|
||||
{
|
||||
workItemVM.WorkItem.ActivityMaster.Tenant = new Tenant();
|
||||
}
|
||||
workItemVM.WorkItem.Tenant = new Tenant();
|
||||
|
||||
double todaysAssigned = 0;
|
||||
if (vm.Tasks != null)
|
||||
{
|
||||
var tasks = vm.Tasks.Where(t => t.WorkItemId == workItemDto.Id).ToList();
|
||||
foreach (TaskAllocation task in tasks)
|
||||
{
|
||||
todaysAssigned += task.PlannedTask;
|
||||
}
|
||||
}
|
||||
workItemVM.TodaysAssigned = todaysAssigned;
|
||||
|
||||
workAreaVM.WorkItems.Add(workItemVM);
|
||||
}
|
||||
}
|
||||
|
||||
floorVM.WorkAreas.Add(workAreaVM);
|
||||
}
|
||||
}
|
||||
|
||||
buildVM.Floors.Add(floorVM);
|
||||
}
|
||||
}
|
||||
projectVM.Buildings.Add(buildVM);
|
||||
}
|
||||
}
|
||||
return Ok(ApiResponse<object>.SuccessResponse(projectVM, "Success.", 200));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private async Task<ProjectDetailsVM> GetProjectViewModel(Guid? id, Project project)
|
||||
{
|
||||
ProjectDetailsVM vm = new ProjectDetailsVM();
|
||||
|
||||
// List<Building> buildings = _unitOfWork.Building.GetAll(c => c.ProjectId == id).ToList();
|
||||
List<Building> buildings = await _context.Buildings.Where(c => c.ProjectId == id).ToListAsync();
|
||||
List<Guid> idList = buildings.Select(o => o.Id).ToList();
|
||||
// List<Floor> floors = _unitOfWork.Floor.GetAll(c => idList.Contains(c.Id)).ToList();
|
||||
List<Floor> floors = await _context.Floor.Where(c => idList.Contains(c.BuildingId)).ToListAsync();
|
||||
idList = floors.Select(o => o.Id).ToList();
|
||||
//List<WorkArea> workAreas = _unitOfWork.WorkArea.GetAll(c => idList.Contains(c.Id), includeProperties: "WorkItems,WorkItems.ActivityMaster").ToList();
|
||||
|
||||
List<WorkArea> workAreas = await _context.WorkAreas.Where(c => idList.Contains(c.FloorId)).ToListAsync();
|
||||
|
||||
idList = workAreas.Select(o => o.Id).ToList();
|
||||
List<WorkItem> workItems = await _context.WorkItems.Include(c => c.WorkCategoryMaster).Where(c => idList.Contains(c.WorkAreaId)).Include(c => c.ActivityMaster).ToListAsync();
|
||||
// List <WorkItem> workItems = _unitOfWork.WorkItem.GetAll(c => idList.Contains(c.WorkAreaId), includeProperties: "ActivityMaster").ToList();
|
||||
idList = workItems.Select(t => t.Id).ToList();
|
||||
List<TaskAllocation> tasks = await _context.TaskAllocations.Where(t => idList.Contains(t.WorkItemId) && t.AssignmentDate.Date == DateTime.UtcNow.Date).ToListAsync();
|
||||
vm.project = project;
|
||||
vm.buildings = buildings;
|
||||
vm.floors = floors;
|
||||
vm.workAreas = workAreas;
|
||||
vm.workItems = workItems;
|
||||
vm.Tasks = tasks;
|
||||
return vm;
|
||||
}
|
||||
|
||||
private Guid GetTenantId()
|
||||
{
|
||||
return _userHelper.GetTenantId();
|
||||
|
Loading…
x
Reference in New Issue
Block a user