public string AddToSale(string userId, string productChildId, string poNumber, DateTime poDate) { userId.IsNullOrWhiteSpaceThrowException("No user"); double totalThisItem = 0; //who is the owner:The product Child owner is the owner //get the productChild productChildId.IsNullOrWhiteSpaceThrowException("No Product"); ProductChild productChild = ProductChildBiz.Find(productChildId); productChild.IsNullThrowException("productChild"); //get the product child's owner Owner ownerProductChild = productChild.Owner; ownerProductChild.IsNullThrowException("productChildOwner"); //get the owner //Get the select list for owner Person ownerPerson = ownerProductChild.Person; ownerPerson.IsNullThrowException("ownerPerson"); System.Web.Mvc.SelectList ownerSelectList = OwnerBiz.SelectListOnlyWith(ownerProductChild); ////the user is the customer user; //get the customer Customer customerUser = CustomerBiz.GetPlayerFor(userId); //Get the select list for Customer //remove the owner from the list... owner cannot sell to self. System.Web.Mvc.SelectList customerSelectList = CustomerBiz.SelectListWithout(ownerPerson); System.Web.Mvc.SelectList selectListOwner = OwnerBiz.SelectListOnlyWith(ownerProductChild); System.Web.Mvc.SelectList selectListCustomer = CustomerBiz.SelectListWithout(ownerPerson); //this is the address in the customer AddressMain addressBillTo = customerUser.DefaultBillAddress; AddressMain addressShipTo = customerUser.DefaultShipAddress; AddressComplex addressShipFromComplex = productChild.ShipFromAddressComplex; string addressBillToId = ""; string addressShipToId = ""; if (!addressBillTo.IsNull()) { addressBillToId = addressBillTo.Id; } if (!addressShipTo.IsNull()) { addressShipToId = addressShipTo.Id; } //Get the select list for AddressInform System.Web.Mvc.SelectList selectListBillTo = AddressBiz.SelectListBillAddressCurrentUser(); //Get the select list for AddressShipTo System.Web.Mvc.SelectList selectListShipTo = AddressBiz.SelectListShipAddressCurrentuser(); //check to see if there is any open sale which belongs to the same buyer and seller BuySellDoc sale = BuySellDocBiz.GetOpenSaleWithSameCustomerAndSeller(customerUser.Id, ownerProductChild.Id, productChild); //create the itemList. List <BuySellItem> buySellItems = new List <BuySellItem>(); string shopId = ""; if (sale.IsNull()) { //otherwise add a new sale sale = CreateSale( productChild, ownerProductChild, 1, productChild.Sell.SellPrice, customerUser, selectListOwner, selectListCustomer, addressBillToId, addressShipToId, selectListBillTo, selectListShipTo, BuySellDocStateENUM.RequestUnconfirmed, BuySellDocStateModifierENUM.Unknown, DateTime.Now, DateTime.Now, shopId); totalThisItem++; } else { //dont really need this, but it is good for consistancy. sale.BuySellDocumentTypeEnum = BuySellDocumentTypeENUM.Purchase; sale.BuySellDocStateEnum = BuySellDocStateENUM.RequestUnconfirmed; //now check to see if it is the same item... or is it a new item //get list of items for the sale List <BuySellItem> itemList = sale.BuySellItems.Where(x => x.MetaData.IsDeleted == false).ToList(); if (itemList.IsNullOrEmpty()) { BuySellItem buySellItem = new BuySellItem(sale.Id, productChild.Id, 1, productChild.Sell.SellPrice, productChild.FullName()); sale.Add(buySellItem); } else { //there are items in the list BuySellItem itemFound = itemList.FirstOrDefault(x => x.ProductChildId == productChild.Id); if (itemFound.IsNull()) { BuySellItem buySellItem = new BuySellItem(sale.Id, productChild.Id, 1, productChild.Sell.SellPrice, productChild.FullName()); sale.Add(buySellItem); } else { totalThisItem = itemFound.Quantity.Order; itemFound.Quantity.Order += 1; itemFound.Quantity.Order_Original = itemFound.Quantity.Order; //itemFound.Quantity.Ship += 1; } } totalThisItem++; sale.AddressShipFromComplex = addressShipFromComplex; BuySellDocBiz.GetDefaultVehicalType(sale); sale.AddressShipFromId = productChild.ShipFromAddressId; sale.RequestUnconfirmed.SetToTodaysDate(UserName, UserId); ControllerCreateEditParameter parm = new ControllerCreateEditParameter(); parm.Entity = sale as ICommonWithId; parm.GlobalObject = GetGlobalObject(); BuySellDocBiz.Update(parm); } BuySellDocBiz.SaveChanges(); string message = string.Format("Success. You ordered {0:N2} for {1:N2} (X{2:N2})", productChild.FullName(), productChild.Sell.SellPrice, totalThisItem); return(message); }
public SelectList SelectListBillAddressesFor(string userId) { return(AddressBiz.SelectListBillAddressCurrentUser()); }