public async Task <IActionResult> Post([FromForm] ProjectDTO projectDto) { if (ModelState.IsValid) { var phases = new List <Phase>(); projectDto.Phases.ForEach(phaseDto => { var phase = new Phase() { Number = phaseDto.Number, Title = phaseDto.Title, Description = phaseDto.Description, }; phases.Add(phase); }); var fileName = Util.Util.GenerateDataStoreObjectName(projectDto.Logo.FileName); var imageObj = new Media() { Name = fileName, Url = await _fileUploader.UploadFile(fileName, "project-logos", projectDto.Logo), }; var platform = _platformManager.GetPlatformByTenant(projectDto.PlatformTenant); var project = new Project() { Title = projectDto.Title, Goal = projectDto.Goal, Logo = imageObj, Phases = phases, Platform = platform, StartDate = projectDto.StartDate, EndDate = projectDto.EndDate, CurrentPhaseNumber = projectDto.CurrentPhase }; if (projectDto.CurrentPhase > projectDto.Phases.Count) { project.CurrentPhaseNumber = 0; } if (projectDto.Moderators != null) { foreach (string moderatorUserName in projectDto.Moderators) { User mod = _userManager.FindByNameAsync(moderatorUserName).Result; if (mod != null) { ProjectModerator moderator = new ProjectModerator() { Project = project, User = mod }; project.Moderators.Add(moderator); } } } platform.Projects.Add(project); _projectManager.AddProject(project); _unitOfWorkManager.Save(); return(Created("/project/details/" + project.ProjectId, new { id = project.ProjectId })); } return(StatusCode(400)); }
public async Task <IActionResult> Put(int id, [FromForm] ProjectDTO projectDto) { if (ModelState.IsValid) { var project = _projectManager.GetProject(id); for (int i = 0; i < projectDto.Phases.Count; i++) { if ((project.Phases.Count < i + 1)) { var phase = new Phase() { Number = projectDto.Phases[i].Number, Title = projectDto.Phases[i].Title, Description = projectDto.Phases[i].Description, }; project.Phases.Add(phase); } else { project.Phases[i].Title = projectDto.Phases[i].Title; project.Phases[i].Description = projectDto.Phases[i].Description; } } project.Title = projectDto.Title; project.Goal = projectDto.Goal; project.StartDate = projectDto.StartDate; project.EndDate = projectDto.EndDate; project.CurrentPhaseNumber = projectDto.CurrentPhase; if (projectDto.CurrentPhase > projectDto.Phases.Count) { project.CurrentPhaseNumber = 1; } if (projectDto.LogoChanged) { var fileName = Util.Util.GenerateDataStoreObjectName(projectDto.Title); var imageObj = new Media() { Name = fileName, Url = await _fileUploader.UploadFile(fileName, "project-logos", projectDto.Logo), }; project.Logo = imageObj; } project.Moderators = new List <ProjectModerator>(); if (projectDto.Moderators != null) { foreach (string moderatorUserName in projectDto.Moderators) { User mod = _userManager.FindByNameAsync(moderatorUserName).Result; if (mod != null) { ProjectModerator moderator = new ProjectModerator() { Project = project, User = mod }; project.Moderators.Add(moderator); } } } _unitOfWorkManager.Save(); _projectManager.UpdateProject(project); return(Created("/project/details/" + project.ProjectId, new { id = project.ProjectId })); } return(StatusCode(400)); }