public async Task <Project> ImportAsync(MbeProject engProject, string userId) { if (!string.IsNullOrEmpty(engProject.Id)) { var existingProject = await _projectRepository.GetProjectsByEngId(engProject.Id); if (existingProject != null) { return(null); } } var project = new Project { MBEProjectId = engProject.Id, Name = engProject.Name, Description = engProject.Description, ProjectNo = engProject.ProjectNo, UsersInProject = new List <UserInProject> { new UserInProject { Id = userId, RoleId = "1" } }, CreatedDate = DateTime.UtcNow }; return(await _projectRepository.AddAsync(project)); }
public async Task ImportFieldHeaders(string mbeProjectId, string projectId, IProjectImportAdapter mbeProjectClient, string userId) { MbeProject mbeProject = await mbeProjectClient.GetProjectByIdAsync(mbeProjectId); var fieldHeaders = mbeProject.ProjectDoorStructure.Select( fieldStructure => new FieldHeader(fieldStructure.FieldName, fieldStructure.Header, fieldStructure.FieldType) ).ToList(); }
public async Task <ProjectImportSuccessStatus> Import(MbeProject engProject, string userId) { var _projectDomain = ObjectLocator.DomainObjectFactory.ProjectDomain; var mbeProjectClient = ObjectLocator.ProjectImportAdapter; //mbeProjectClient. //var _projectImportAdapter = this.ObjectLocator.ProjectImportAdapter; var createdProject = await _projectDomain.ImportAsync(engProject, userId); var projectMSResult = new ProjectImportSuccessStatus(createdProject.MBEProjectId); if (createdProject != null) { // Set Progress project id in Engineering project (only a single Progress project is allowed per Engineering project) var isUpdateSuccessfull = await mbeProjectClient.SetManagementProjectId(createdProject.MBEProjectId, createdProject.Id); if (isUpdateSuccessfull) { var doorMSResult = await ObjectLocator.MbeDoorService.ImportDoors(createdProject.MBEProjectId, createdProject.Id); if (doorMSResult.IsSuccess) { projectMSResult.Project = createdProject; projectMSResult.IsSuccess = true; Task addProjectDocuments = ObjectLocator.DomainObjectFactory.ProjectDocumentDomain.ImportProjectDocuments(createdProject.MBEProjectId, createdProject.Id, this.ObjectLocator.ProjectDocumentImportAdapter); Task addFieldHeaders = _projectDomain.ImportFieldHeaders(createdProject.MBEProjectId, createdProject.Id, mbeProjectClient, userId); await Task.WhenAll(addProjectDocuments, addFieldHeaders); } else { await _projectDomain.DeleteProject(engProject.Id, userId); projectMSResult.IsSuccess = false; projectMSResult.Error = doorMSResult.Error; } } else { await _projectDomain.DeleteProject(engProject.Id, userId); projectMSResult.IsSuccess = false; //projectMSResult.Error = "Project creation failed. Please try again or consult the developers."; projectMSResult.Error = "Project creation failed. Please try again or consult the developers."; } } else { projectMSResult.IsSuccess = false; //projectMSResult.Error = "Project creation failed. Please try again or consult the developers."; projectMSResult.Error = "Project creation failed. Please try again or consult the developers."; } return(projectMSResult); }
public async Task <HttpResponseMessage> ImportMBEProject(MbeProject mbeProject) { string userId = RequestContext.GetUserId(); var result = await ObjectsLocator.MbeProjectService.ImportFromMbe(mbeProject, userId); if (result == null) { return(Request.CreateResponse(HttpStatusCode.Conflict)); } return(Request.CreateResponse(HttpStatusCode.OK, result)); }