Organization_Management #142
8
Marco.Pms.Model/Dtos/Projects/AssignServiceDto.cs
Normal file
8
Marco.Pms.Model/Dtos/Projects/AssignServiceDto.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Marco.Pms.Model.Dtos.Projects
|
||||
{
|
||||
public class AssignServiceDto
|
||||
{
|
||||
public required Guid ProjectId { get; set; }
|
||||
public required List<Guid> ServiceIds { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
using Marco.Pms.Model.OrganizationModel;
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
using Marco.Pms.Model.ViewModels.Projects;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Organization
|
||||
{
|
||||
public class AssignOrganizationVm
|
||||
{
|
||||
public BasicProjectVM? Project { get; set; }
|
||||
public BasicOrganizationVm? Organization { get; set; }
|
||||
public BasicOrganizationVm? ParentOrganization { get; set; }
|
||||
public ServiceMasterVM? Service { get; set; }
|
||||
public OrgTypeMaster? OrganizationType { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
namespace Marco.Pms.Model.ViewModels.Organization
|
||||
{
|
||||
public class BasicOrganizationVm
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public string? Email { get; set; }
|
||||
public string? ContactPerson { get; set; }
|
||||
public string? Address { get; set; }
|
||||
public string? ContactNumber { get; set; }
|
||||
public double SPRID { get; set; }
|
||||
}
|
||||
}
|
@ -6,7 +6,9 @@ using Marco.Pms.Model.Entitlements;
|
||||
using Marco.Pms.Model.OrganizationModel;
|
||||
using Marco.Pms.Model.Utilities;
|
||||
using Marco.Pms.Model.ViewModels.Activities;
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
using Marco.Pms.Model.ViewModels.Organization;
|
||||
using Marco.Pms.Model.ViewModels.Projects;
|
||||
using Marco.Pms.Services.Service;
|
||||
using MarcoBMS.Services.Helpers;
|
||||
using MarcoBMS.Services.Service;
|
||||
@ -255,6 +257,18 @@ namespace Marco.Pms.Services.Controllers
|
||||
&& sp.PlannedStartDate.Date >= todaysDate && sp.ActualStartDate.Date >= todaysDate).ToListAsync();
|
||||
});
|
||||
|
||||
var serviceTask = Task.Run(async () =>
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
return await context.ServiceMasters.Where(s => model.ServiceIds.Contains(s.Id) && s.TenantId == tenantId).ToListAsync();
|
||||
});
|
||||
|
||||
var organizationTypeTask = Task.Run(async () =>
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
return await context.OrgTypeMasters.FirstOrDefaultAsync(o => o.Id == model.OrganizationId);
|
||||
});
|
||||
|
||||
var organizationTask = Task.Run(async () =>
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
@ -286,8 +300,10 @@ namespace Marco.Pms.Services.Controllers
|
||||
&& p.OrganizationTypeId == ServiceProvider);
|
||||
});
|
||||
|
||||
await Task.WhenAll(organizationTask, parentorganizationTask, projectTask, projectServicesTask, isPMCTask, isServiceProviderTask);
|
||||
await Task.WhenAll(organizationTask, parentorganizationTask, projectTask, projectServicesTask, isPMCTask, isServiceProviderTask, serviceTask, organizationTypeTask);
|
||||
|
||||
var services = serviceTask.Result;
|
||||
var organizationType = organizationTypeTask.Result;
|
||||
var organization = organizationTask.Result;
|
||||
var projectServices = projectServicesTask.Result;
|
||||
var parentorganization = parentorganizationTask.Result;
|
||||
@ -345,7 +361,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
TenantId = project.TenantId,
|
||||
PlannedStartDate = project.StartDate ?? DateTime.UtcNow,
|
||||
PlannedEndDate = project.EndDate ?? DateTime.UtcNow,
|
||||
ActualStartDate = DateTime.UtcNow,
|
||||
ActualStartDate = DateTime.UtcNow
|
||||
};
|
||||
_context.ProjectServiceMappings.Add(projectService);
|
||||
}
|
||||
@ -365,7 +381,18 @@ namespace Marco.Pms.Services.Controllers
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var response = _mapper.Map<OrganizationVM>(organization);
|
||||
var organizationVm = _mapper.Map<BasicOrganizationVm>(organization);
|
||||
var parentorganizationVm = _mapper.Map<BasicOrganizationVm>(parentorganization);
|
||||
var projectvm = _mapper.Map<BasicProjectVM>(project);
|
||||
|
||||
var response = services.Select(s => new AssignOrganizationVm
|
||||
{
|
||||
Project = projectvm,
|
||||
OrganizationType = organizationType,
|
||||
Organization = organizationVm,
|
||||
ParentOrganization = parentorganizationVm,
|
||||
Service = _mapper.Map<ServiceMasterVM>(s)
|
||||
}).ToList();
|
||||
|
||||
return Ok(ApiResponse<object>.SuccessResponse(response, "Organization successfully assigned to the project", 200));
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
|
||||
CreateMap<CreateOrganizationDto, Organization>();
|
||||
CreateMap<Organization, OrganizationVM>();
|
||||
CreateMap<Organization, BasicOrganizationVm>();
|
||||
|
||||
#endregion
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user