public async Task <IActionResult> Create(string orgName, ProjectForCreationDTO projForCreate)
 {
     if (HttpContext.Items.ContainsKey("organization"))
     {
         var org     = HttpContext.Items["organization"] as Organization;
         var newProj = this.mapper.Map <Project>(projForCreate);
         if (await this.projectRepo.CreateAsync(org, newProj))
         {
             if (await this.projectRepo.SaveChangesAsync())
             {
                 return(CreatedAtRoute("GetProject",
                                       new { controller = "Projects", orgName = org.Name, projectName = newProj.Name },
                                       new { message = $"{projForCreate.Name} has been created successfully" }));
             }
             return(BadRequest($"Failed to create {newProj.NormalizedName} organization"));
         }
         return(BadRequest($"{projForCreate.Name} already exist"));
     }
     return(NotFound());
 }
        public async Task <IActionResult> Update(string projectName, string orgName, ProjectForCreationDTO projForUpdate)
        {
            if (HttpContext.Items.ContainsKey("organization"))
            {
                var org = HttpContext.Items["organization"] as Organization;
                if (org != null)
                {
                    if (HttpContext.Items.ContainsKey("project"))
                    {
                        var oldProject = HttpContext.Items["project"] as Project;
                        var newProject = this.mapper.Map <Project>(projForUpdate);
                        if (oldProject.NormalizedName != this.normalizer.Normalize(newProject.Name))
                        {
                            await this.projectRepo.UpdateWithNameAsync(org, oldProject, newProject);

                            if (await this.projectRepo.SaveChangesAsync())
                            {
                                return(Ok(new { message = $"@{projectName} project has been updated successfully" }));
                            }
                            return(BadRequest($"Failed to update @{projectName} project"));
                        }
                        else
                        {
                            this.projectRepo.UpdateWithoutName(org, oldProject, newProject);
                            if (await this.projectRepo.SaveChangesAsync())
                            {
                                return(Ok(new { message = $"@{projectName} project has been updated successfully" }));
                            }
                            return(BadRequest($"Failed to update @{projectName} project"));
                        }
                    }
                    return(NotFound($"{projectName} project isn't exist"));
                }
            }
            return(NotFound($"{orgName} organizaiton isn't exist"));
        }