public async Task <ActionResult <InvoiceToReturnDto> > AddNew([FromBody] InvoiceToCreateDto newInvoicedto)
        {
            if (ModelState.IsValid)
            {
                var invoice = _mapper.Map <Invoice>(newInvoicedto);


                var addedInvoice = await this._invoiceService.CreateInvoiceAsync(invoice);


                if (addedInvoice == null)
                {
                    return(BadRequest(new ApiResponse(400, "Problem creating Invoice")));
                }

                InvoiceToReturnDto invoiceToReturn = new InvoiceToReturnDto();



                return(Ok(_mapper.Map <InvoiceToReturnDto>(addedInvoice)));
            }

            return(BadRequest("failed to add new invoice"));
        }
        public async Task <ActionResult <InvoiceToReturnDto> > UpdateInvoice(int id, [FromBody]
                                                                             InvoiceToCreateDto newInvoice)
        {
            var spec = new InvoiceWithCustomerAndItemsSpecification(id);

            var invoice = await _unitOfWork.Repository <Invoice>().GetEntityWithSpecAsync(spec);

            // var items = _mapper.Map<ICollection<InvoiceItem>, ICollection<InvoiceItemDto>>(GetItemsForInvoice(id));

            // newInvoice.Items = items;

            _mapper.Map(newInvoice, invoice);



            _unitOfWork.Repository <Invoice>().Update(invoice);

            if (await _unitOfWork.Repository <Invoice>().SaveAllAsync())
            {
                return(Ok(_mapper.Map <InvoiceToReturnDto>(invoice)));
            }

            return(BadRequest("failed to update Invoice"));
        }