public static Garden ConvertToModel(this GardenDto dto) { return(new Garden { Name = dto.Name, MinUse = dto.MinUse ?? 1, Description = dto.Description, Location = dto.Location?.ConvertToModel(), Criteria = dto.Criteria?.ConvertToModel(), Validation = dto.Validation, Photos = dto.Photos?.ConvertToModel <Garden>() }); }
public async Task <IActionResult> CreateGarden([FromBody] GardenDto garden) { try { var me = ExtractIdFromToken(Request.Headers[HttpRequestHeader.Authorization.ToString()]); var result = await service.AddGarden(me, garden); return(Created($"/api/Gardens/{result.Data.Id}", result)); } catch (HttpResponseException) { throw; } catch (Exception) { throw new BadRequestApiException(); } }
public async Task <QueryResults <GardenDto> > AddGarden(Guid me, GardenDto dto) { var owner = await db.Users.GetByIdAsync(me) ?? throw new NotFoundApiException(); dto.IsReserved = false; dto.Validation = Status.Accepted; var garden = dto.ConvertToModel(); owner.Gardens = owner.Gardens ?? new List <Garden>(); owner.Gardens.Add(garden); await db.SaveChangesAsync(); return(new QueryResults <GardenDto> { Data = garden.ConvertToDto() }); }
public async Task <IActionResult> UpdateGarden([FromRoute(Name = "id")] Guid gardenId, [FromBody] GardenDto dto) { try { var me = ExtractIdFromToken(Request.Headers[HttpRequestHeader.Authorization.ToString()]); return(Ok(await service.ChangeGarden(me, gardenId, dto))); } catch (HttpResponseException) { throw; } catch (Exception) { throw new BadRequestApiException(); } }
public async Task <QueryResults <GardenDto> > ChangeGarden(Guid me, Guid gardenId, GardenDto dto) { var garden = db.Gardens.Include(g => g.Photos) .Include(g => g.Location) .Include(g => g.Criteria) .Include(g => g.Owner) .GetByIdAsync(gardenId).Result ?? throw new NotFoundApiException(); if (!garden.Owner.Id.Equals(me)) { throw new ForbiddenApiException(); } garden.Name = dto.Name ?? garden.Name; garden.MinUse = dto.MinUse ?? garden.MinUse; garden.Description = dto.Description ?? garden.Description; garden.Location = dto.Location?.ConvertToModel() ?? garden.Location; garden.Criteria = dto.Criteria?.ConvertToModel() ?? garden.Criteria; garden.Photos = dto.Photos?.ConvertToModel <Garden>() ?? garden.Photos; db.Gardens.Update(garden); await db.SaveChangesAsync(); return(new QueryResults <GardenDto> { Data = garden.ConvertToDto() }); }