private static DTO.OpeningPeriod CreateDTOFromEntity(Model.OpeningPeriod op) { //fixme: Possibilité d'amélioration ? return(new DTO.OpeningPeriod() { Id = op.Id, Opening = op.Opening, Closing = op.Closing, Day = op.Day, // on ne le stocke pas en DB car calculable, mais on facilite la vie // des applications clientes en le proposant dans le DTO! DurationOfOpening = op.Closing.Subtract(op.Opening) }); }
public async Task <IActionResult> Delete(int id) { Model.OpeningPeriod entity = await FindOpeningPeriodById(id); if (entity == null) { // todo: débat: si l'on demande une suppression d'une entité qui n'existe pas // s'agit-il vraiment d'un cas d'erreur? return(NotFound()); } _context.Remove(entity); await _context.SaveChangesAsync(); return(Ok()); }
public async Task <IActionResult> Put(int id, [FromBody] DTO.OpeningPeriod dto) { Model.OpeningPeriod entity = await FindOpeningPeriodById(id); if (entity == null) { return(NotFound()); } //fixme: comment améliorer cette implémentation? entity.Closing = dto.Closing; entity.Day = dto.Day; entity.Opening = dto.Opening; await _context.SaveChangesAsync(); return(Ok()); }
public async Task <IActionResult> Post(int shopId, [FromBody] DTO.OpeningPeriod dto) { Model.Shop shop = await FindShopById(shopId); if (shop == null) { return(NotFound()); } int userId = int.Parse(User.Claims.First(c => c.Type == PrivateClaims.UserId).Value); #region ... if (!User.IsInRole(Constants.Roles.Admin) && shop.OwnerId != userId) { return(Forbid()); } #endregion Model.OpeningPeriod entity = CreateEntityFromDTO(dto); shop.AddOpeningPeriod(entity); await _context.SaveChangesAsync(); return(Created($"api/{entity.Id}", CreateDTOFromEntity(entity))); }
public async Task <IActionResult> GetById(int id) { Model.OpeningPeriod entity = await FindOpeningPeriodById(id); return((entity == null) ? NotFound() : (IActionResult)Ok(CreateDTOFromEntity(entity))); }