public void CreateNewInvoice(InvoiceDto invoiceDto) { using (NpgsqlConnection connection = this.databaseConnectionFactory.Instance.Create()) { connection.Open(); using (NpgsqlTransaction transaction = connection.BeginTransaction()) { try { Invoice invoice = this.dtoToEntityMapper.Map <InvoiceDto, Invoice>(invoiceDto); long invoiceId = this.invoicesService.Insert(connection, invoice); InvoiceCustomerDto invoiceCustomerDto = new InvoiceCustomerDto { InvoiceId = invoiceId, CustomerId = invoiceDto.CustomerId }; InvoiceCustomer invoiceCustomer = this.dtoToEntityMapper.Map <InvoiceCustomerDto, InvoiceCustomer>(invoiceCustomerDto); this.invoiceCustomerService.Insert(connection, invoiceCustomer); IEnumerable <InvoiceItem> invoiceItems = this.dtoToEntityMapper.MapList <IEnumerable <InvoiceItemDto>, IEnumerable <InvoiceItem> >(invoiceDto.InvoiceItems); IEnumerable <InvoiceItem> calculatedInvoiceItemsWithBasicDiscount = this.invoiceItemService.IncludeBasicDiscountForPaying(connection, invoiceItems); IEnumerable <InvoiceItem> calculatedInvoiceItemsWithBasicAndActionDiscount = this.invoiceItemService.IncludeActionDiscountForPaying(connection, invoiceItems); this.invoiceItemService.InsertList(connection, calculatedInvoiceItemsWithBasicAndActionDiscount, transaction); this.invoiceItemInvoicesService.InsertList(connection, calculatedInvoiceItemsWithBasicDiscount, invoiceId, transaction); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Console.Write(ex.Message); } } } }
public InvoiceCustomerDto ToInvoiceCustomerDto() { var customer = JsonConvert.DeserializeObject <CustomerDto>(Json); var invoiceCustomer = new InvoiceCustomerDto() { CustomerId = customer.Id, Name = customer.UserName, Address = customer.Address }; return(invoiceCustomer); }