internal Address LoadAddress(DbDataReader rdr) { var result = new Address( AddressesTable.ReadUserName(rdr), AddressesTable.ReadFirstName(rdr), AddressesTable.ReadLastName(rdr), AddressesTable.ReadEmail(rdr), AddressesTable.ReadStreet1(rdr), AddressesTable.ReadStreet2(rdr), AddressesTable.ReadCity(rdr), AddressesTable.ReadStateOrProvince(rdr), AddressesTable.ReadZip(rdr), AddressesTable.ReadCountry(rdr)); result.AddressID = AddressesTable.ReadAddressID(rdr); return(result); }
DbCommand GetAddressCommand(Address address) { var sql = new SqlStatement(connectionStringName); var settings = new Dictionary <string, object>() { { AddressesTable.Columns.UserName, address.UserName }, { AddressesTable.Columns.FirstName, address.FirstName }, { AddressesTable.Columns.LastName, address.LastName }, { AddressesTable.Columns.Email, address.Email }, { AddressesTable.Columns.Street1, address.Street1 }, { AddressesTable.Columns.Street2, address.Street2 != null ? address.Street2 : "" }, { AddressesTable.Columns.City, address.City }, { AddressesTable.Columns.StateOrProvince, address.StateOrProvince }, { AddressesTable.Columns.Zip, address.Zip }, { AddressesTable.Columns.Country, address.Country }, { AddressesTable.Columns.IsDefault, address.IsDefault } }; if (SqlHelper.RecordExists(connectionStringName, AddressesTable.TABLE_NAME, new Dictionary <string, object>() { { AddressesTable.Columns.UserName, address.UserName }, { AddressesTable.Columns.Street1, address.Street1 }, { AddressesTable.Columns.City, address.City }, { AddressesTable.Columns.StateOrProvince, address.StateOrProvince }, })) { //update sql = AddressesTable.Update(settings) .Where(AddressesTable.Columns.UserName, address.UserName) .And(AddressesTable.Columns.Street1, address.Street1) .And(AddressesTable.Columns.City, address.City) .And(AddressesTable.Columns.StateOrProvince, address.StateOrProvince); } else { //insert sql = AddressesTable.Insert(settings); } var cmd = sql.BuildCommand(); //add the params return(cmd); }
public Customer GetCustomer(string userName) { var productRepo = new SimpleProductRepository(); Customer result = null; var batch = new BatchSql(); //see if there's a customer - if not create one object user = CustomersTable.Select(CustomersTable.Columns.UserName) .Where(CustomersTable.Columns.UserName, userName) .BuildCommand() .ExecuteScalar(); if (user == null) { CustomersTable.Insert( new Dictionary <string, object>() { { CustomersTable.Columns.UserName, userName }, { CustomersTable.Columns.LanguageCode, System.Globalization.CultureInfo.CurrentCulture.TwoLetterISOLanguageName } }) .BuildCommand() .ExecuteNonQuery(); } //customer batch.Append(CustomersTable.Select() .Where(CustomersTable.Columns.UserName, userName)); //addresses batch.Append(AddressesTable.Select() .Where(AddressesTable.Columns.UserName, userName)); //shopping cart Guid orderID = GetCartID(userName); batch.Append(OrdersTable.Select() .Where(OrdersTable.Columns.OrderID, orderID)); //items //avert your eyes if this bothers you var itemSql = new SqlStatement(connectionStringName); itemSql.Add(string.Format("SELECT {0}, {1} ", OrderItemsTable.COLUMN_LIST, ProductsTable.COLUMN_LIST)); itemSql.InnerJoin( OrderItemsTable.TABLE_NAME, OrderItemsTable.ColumnsQualified.SKU, ProductsTable.TABLE_NAME, ProductsTable.ColumnsQualified.SKU) .Where(OrderItemsTable.Columns.OrderID, orderID); batch.Append(itemSql); var cmd = batch.BuildCommand(connectionStringName); using (var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { //customer if (rdr.Read()) { result = new Customer(userName, CustomersTable.ReadEmail(rdr), CustomersTable.ReadFirst(rdr), CustomersTable.ReadLast(rdr)); } else { result = new Customer(); } //address result.AddressBook = new List <Address>(); if (rdr.NextResult()) { while (rdr.Read()) { result.AddressBook.Add(LoadAddress(rdr)); } } //cart result.Cart = new ShoppingCart(userName); if (rdr.NextResult()) { if (rdr.Read()) { result.Cart.ShippingAddress = result.AddressBook.SingleOrDefault(x => x.AddressID == OrdersTable.ReadShippingAddressID(rdr)); result.Cart.BillingAddress = result.AddressBook.SingleOrDefault(x => x.AddressID == OrdersTable.ReadBillingAddressID(rdr)); result.Cart.ShippingService = OrdersTable.ReadShippingService(rdr) ?? ""; result.Cart.ShippingAmount = OrdersTable.ReadShippingAmount(rdr); result.Cart.TaxAmount = OrdersTable.ReadTaxAmount(rdr); } } //items if (rdr.NextResult()) { while (rdr.Read()) { var product = productRepo.LoadProduct(rdr); result.Cart.Items.Add(new ShoppingCartItem(product, CartItemsTable.ReadQuantity(rdr), CartItemsTable.ReadDateAdded(rdr))); } } } return(result); }
public Order GetOrder(Guid orderID) { SimpleProductRepository productRepository = new SimpleProductRepository(); SimpleCustomerRepository customerRepository = new SimpleCustomerRepository(); Order result = null; var batch = new BatchSql(); batch.Append(OrdersTable.Select().Where("OrderID", orderID)); //items //products for the items var sql = new SqlStatement(connectionStringName); sql.Add("SELECT "); sql.Add(ProductsTable.COLUMN_LIST); sql.Add(OrderItemsTable.COLUMN_LIST); sql.Add("FROM Products INNER JOIN OrderItems ON Products.SKU = OrderItems.SKU"); sql.Add("WHERE SKU IN (SELECT SKU FROM OrderItems WHERE OrderID=@OrderID)"); //transactions batch.Append(TransactionsTable.Select().Where("orderid", orderID)); int shippingAddressID = 0; int billingAddressID = 0; int shippingMethodID = 0; //pull it var cmd = sql.BuildCommand(); using (var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { if (rdr.Read()) { result = new Order(OrdersTable.ReadOrderStatusID(rdr)) { DateCreated = OrdersTable.ReadCreatedOn(rdr), DateShipped = OrdersTable.ReadDateShipped(rdr), UserName = OrdersTable.ReadUserName(rdr), DiscountAmount = OrdersTable.ReadDiscountAmount(rdr), DiscountReason = OrdersTable.ReadDiscountReason(rdr), EstimatedDelivery = OrdersTable.ReadEstimatedDelivery(rdr), ID = orderID, OrderNumber = OrdersTable.ReadOrderNumber(rdr), ShippingAmount = OrdersTable.ReadShippingAmount(rdr), ShippingService = OrdersTable.ReadShippingService(rdr), TaxAmount = OrdersTable.ReadTaxAmount(rdr), }; billingAddressID = OrdersTable.ReadBillingAddressID(rdr); shippingAddressID = OrdersTable.ReadShippingAddressID(rdr); } //load the items result.Items = new List <OrderLine>(); if (rdr.NextResult()) { while (rdr.Read()) { var product = productRepository.LoadProduct(rdr); var item = new OrderLine(OrderItemsTable.ReadDateAdded(rdr), OrderItemsTable.ReadQuantity(rdr), product); result.Items.Add(item); } } //transactions result.Transactions = new List <Transaction>(); if (rdr.NextResult()) { while (rdr.Read()) { Transaction t = new Transaction( TransactionsTable.ReadTransactionID(rdr), orderID, TransactionsTable.ReadAmount(rdr), TransactionsTable.ReadTransactionDate(rdr), TransactionsTable.ReadAuthorizationCode(rdr), TransactionsTable.ReadNotes(rdr), TransactionsTable.ReadProcessor(rdr)); result.Transactions.Add(t); } } } sql = new SqlStatement(connectionStringName); //addresses batch.Append(AddressesTable.Select().Where("addressid", shippingAddressID)); batch.Append(AddressesTable.Select().Where("addressid", billingAddressID)); //shipping method batch.Append(ShippingMethodsTable.Select().Where("shippingmethodid", shippingMethodID)); cmd = batch.BuildCommand(connectionStringName); using (var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { //shipping address if (rdr.Read()) { //shipping result.ShippingAddress = customerRepository.LoadAddress(rdr); } //billing address if (rdr.NextResult()) { if (rdr.Read()) { result.BillingAddress = customerRepository.LoadAddress(rdr); } } //shipping method if (rdr.NextResult()) { if (rdr.Read()) { LoadShipping(rdr); } } } return(result); }
/// <summary> /// Returns row index from Address Table by short address /// </summary> /// <returns>int</returns> public int GetAddressIndexByShortAddress(string text) { return(AddressesTable.IndexOf(GetAddressByShortAddress(text))); }
/// <summary> /// Returns row from Address Table by short address /// </summary> /// <returns>Address</returns> public AddressComponent GetAddressByShortAddress(string text) { return(AddressesTable.Find(row => row.LeftCell.Text.Contains(text))); }