Added the VM in assign organization to project

This commit is contained in:
ashutosh.nehete 2025-09-18 15:18:33 +05:30
parent de883103d5
commit efd8667774
5 changed files with 68 additions and 4 deletions

View 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; }
}
}

View File

@ -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; }
}
}

View File

@ -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; }
}
}

View File

@ -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));
}

View File

@ -45,6 +45,7 @@ namespace Marco.Pms.Services.MappingProfiles
CreateMap<CreateOrganizationDto, Organization>();
CreateMap<Organization, OrganizationVM>();
CreateMap<Organization, BasicOrganizationVm>();
#endregion
@ -447,4 +448,4 @@ namespace Marco.Pms.Services.MappingProfiles
#endregion
}
}
}
}