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));
            }
        }