public async Task <InvoiceDTO> ByUserID(int userID) { //получаем текущую корзину ShoppingCartDTO cartDTO = await _shoppingCartMsClient.GetShoppingCartByUserID(userID); //если она существует начинаем создание счета if (cartDTO != null && cartDTO.ShoppingCartID > 0 && cartDTO.Items.Count > 0) { Invoice invoiceFromDb = await _invoicesRepository.ByShoppingCartID(cartDTO.ShoppingCartID); if (invoiceFromDb != null) { //если актуальная информация не сходится с информацией в бд то удаляем старый счет и создаем новый иначе возвращаем уже имеющийся счет if (invoiceFromDb.Total != cartDTO.Total || invoiceFromDb.CountOfCommodities != cartDTO.Items.Count) { await _invoicesRepository.DeleteByID(invoiceFromDb.InvoiceID); Invoice newInvoice = CreateInvoiceFromCart(cartDTO); Invoice newInvoiceFromDb = await _invoicesRepository.Add(newInvoice); return(_mapper.Map <InvoiceDTO>(newInvoiceFromDb)); } else { return(_mapper.Map <InvoiceDTO>(invoiceFromDb)); } //если счета по айди корзины в базе нет то создаем новый } else { Invoice newInvoice = CreateInvoiceFromCart(cartDTO); Invoice newInvoiceFromDb = await _invoicesRepository.Add(newInvoice); return(_mapper.Map <InvoiceDTO>(newInvoiceFromDb)); } } return(new InvoiceDTO()); }