public async Task <IActionResult> Create([FromBody] ContractCreateUpdateDto contractDTO) { try { if (contractDTO == null) { return(BadRequest()); } var delivery = await this.deliveryRepository.GetByIdWithIncludesAsync(contractDTO.DeliveryId); var customer = await this.customerRepository.GetByIdWithIncludesAsync(contractDTO.CustomerId); var items = await this.itemRepositry.FindAsync(t => contractDTO.ItemId.Contains(t.Id)); if (delivery == null || customer == null || items.Count() == 0) { return(NotFound()); } var contractDomain = this.mapper.Map <Contract>(contractDTO); await this.contractRepository.CreateAsync(contractDomain); contractDomain.Items = items; await this.contractRepository.UpdateAsync(contractDomain); return(Ok()); } catch (Exception ex) { this.logger.LogError(ex.Message); return(StatusCode(500)); } }
public async Task <IActionResult> Update([FromRoute][Range(1, int.MaxValue)][Required] int id, [FromBody] ContractCreateUpdateDto contractDTO) { try { var contracts = await this.contractRepository.FindAsync(x => x.Id == id); var contract = contracts.FirstOrDefault(); if (contract == null) { return(NotFound()); } var delivery = await this.deliveryRepository.GetByIdWithIncludesAsync(contractDTO.DeliveryId); var customer = await this.customerRepository.GetByIdWithIncludesAsync(contractDTO.CustomerId); var items = await this.itemRepositry.FindAsync(t => contractDTO.ItemId.Contains(t.Id)); if (delivery == null || customer == null || items.Count() == 0) { return(NotFound()); } contract = this.mapper.Map <Contract>(contractDTO); contract.Id = id; contract.Items = items; await this.contractRepository.UpdateAsync(contract); return(Ok()); } catch (Exception ex) { this.logger.LogError(ex.Message); return(StatusCode(500)); } }