private void AddShippingAddressToOwnerPersonIfItIsNew(ProductChild pc) { Owner productChildOwner = pc.Owner; productChildOwner.IsNullThrowException(); Person ownerPerson = productChildOwner.Person; ownerPerson.IsNullThrowException(); AddressBiz addressBiz = OwnerBiz.AddressBiz; //get the address from the productChild AddressComplex shipFromAddressComplexInProductChild = pc.ShipFromAddressComplex; shipFromAddressComplexInProductChild.ErrorCheck(); //if there is no address... there should be an error. if (!shipFromAddressComplexInProductChild.Error.IsNullOrWhiteSpace()) { throw new Exception("You need to add the address of where the product is sitting"); } //address is complete. //We need to make the unique name from this so that we can check it exists in the db AddressMain addressToSave = addressBiz.Factory() as AddressMain; addressToSave.LoadFor(shipFromAddressComplexInProductChild); addressToSave.Name = addressToSave.MakeUniqueName(); //locate this address in Person //get all the addresses for the ownerPerson List <AddressMain> allAddressForOwnerPerson = addressBiz.FindAll().Where(x => x.PersonId == ownerPerson.Id).ToList(); if (allAddressForOwnerPerson.IsNull()) { //no addresses found. Its empty... //so add the new address addNewAddress(pc, ownerPerson, addressBiz, addressToSave); } { //addresses have been found //we do not update old addresses, we just add new ones, if they change. AddressMain addressFound = allAddressForOwnerPerson.FirstOrDefault(x => x.Name.ToLower() == addressToSave.Name.ToLower()); if (addressFound.IsNull()) { //the address was not found. //AddressComplex contains a new address //Add it to the person's addresses addNewAddress(pc, ownerPerson, addressBiz, addressToSave); } //else //{ // updateAddress(pc, addressBiz, addressToSave); //} } //otherwise do nothing }
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); }
/// <summary> /// This returns the new address Id, or null. /// </summary> /// <param name="buySellDoc"></param> /// <param name="addressComplex"></param> /// <returns></returns> private bool isNewAddress(BuySellDoc buySellDoc, AddressComplex addressComplex, out string addressFoundId) { addressFoundId = ""; if (addressComplex.IsNull()) { return(false); } buySellDoc.IsNullThrowException(); Customer customer = buySellDoc.Customer; customer.IsNullThrowException(); Person person = customer.Person; person.IsNullThrowException(); addressComplex.ErrorCheck(); //if there is no address... there should be an error. if (!addressComplex.Error.IsNullOrWhiteSpace()) { throw new Exception(addressComplex.Error); } //address is complete. //We need to make the unique name from this so that we can check it exists in the db AddressMain addressToSave = AddressBiz.Factory() as AddressMain; addressToSave.LoadFor(addressComplex); addressToSave.Name = addressToSave.MakeUniqueName(); //locate this address in Person //get all the addresses for the ownerPerson List <AddressMain> allAddressForOwnerPerson = AddressBiz.FindAll().Where(x => x.PersonId == person.Id).ToList(); if (allAddressForOwnerPerson.IsNull()) { //no addresses found. Its empty... //so add the new address return(true); } else { //addresses have been found //we do not update old addresses, we just add new ones, if they change. AddressMain addressFound = allAddressForOwnerPerson.FirstOrDefault(x => x.Name.ToLower() == addressToSave.Name.ToLower()); if (addressFound.IsNull()) { //the address was not found. //AddressComplex contains a new address //Add it to the person's addresses return(true); } else { addressFoundId = addressFound.Id; } } return(false); }