public override void LoadData <T>(DbContext context, dynamic entity) { base.LoadData <T>(context, (T)entity); if (entity is CU_B_ADDRESS_BOOK) { CustomersContext DBContext = (CustomersContext)context; GenderDescription = entity.SY_GENDER?.GENDER_DESCR; TitleDescription = entity.CU_S_TITLE?.TITLE_DESCR; //CU_S_TITLE SalutationDescription = entity.CU_S_SALUTATION?.SALUTATION_DESCR; //CU_S_SALUTATION StatusDescription = entity.CU_S_STATUS?.STATUS_DESCR; //CU_S_STATUS CategoryDescription = entity.CU_S_CATEGORY?.CATEGORY_DESCR; //CU_S_CATEGORY CustomerTypeDescription = entity.CU_S_TYPE?.TYPE_DESCR; //CU_S_TYPE OccupationDescription = entity.CU_S_OCCUPATION?.OCCUPATION_DESCR; //CU_S_OCCUPATION ShopDescription = entity.CU_B_ADDRESS_BOOK_EXT_AUS?.CM_B_SHOP?.SHOP_DESCR; LanguageDescription = DBContext.SY_LANGUAGE.FirstOrDefault(E => E.LANGUAGE_CODE == LanguageCode)?.LANGUAGE_DESCR; PreferredTimeOfContact preferredTimeOfContact = EnumHelper.GetEnumFromValue <PreferredTimeOfContact>(PreferredTimeOfContactCode, PreferredTimeOfContact.NoPreference); PreferredTimeOfContactDescription = EnumHelper.GetDescription <PreferredTimeOfContact>(preferredTimeOfContact); LastHAItemHistory = LoadLastHAItems((CustomersContext)context, entity); } else if (entity is CU_B_LEAD_EXT_AUS) { CustomersContext DBContext = (CustomersContext)context; CU_B_LEAD_EXT_AUS lead = (CU_B_LEAD_EXT_AUS)entity; GenderDescription = DBContext.SY_GENDER.FirstOrDefault(E => E.GENDER_CODE == lead.GENDER)?.GENDER_DESCR; //TitleDescription = entity.CU_S_TITLE?.TITLE_DESCR; //Not available in leads SalutationDescription = DBContext.CU_S_SALUTATION.FirstOrDefault(E => E.SALUTATION_CODE == lead.SALUTATION)?.SALUTATION_DESCR; //CU_S_SALUTATION StatusDescription = DBContext.CU_S_STATUS.FirstOrDefault(E => E.STATUS_CODE == lead.STATUS_CODE)?.STATUS_DESCR; //CU_S_STATUS //CategoryDescription = DBContext.CU_S_CATEGORY.FirstOrDefault(E => E.CATEGORY_CODE == lead.)?.CATEGORY_DESCR; //Not available in leads CustomerTypeDescription = DBContext.CU_S_TYPE.FirstOrDefault(E => E.TYPE_CODE == lead.LEADTYPE)?.TYPE_DESCR; //CU_S_TYPE //OccupationDescription = entity.CU_S_OCCUPATION?.OCCUPATION_DESCR; //Not available in leads //ShopDescription = entity.CU_B_ADDRESS_BOOK_EXT_AUS?.CM_B_SHOP?.SHOP_DESCR; //Not available in leads } }
public ActionResult <CustomerExtended> ConvertFromLead(string xid) { CustomerExtended Result = null; CU_B_LEAD_EXT_AUS Item = DBContext.CU_B_LEAD_EXT_AUS.FirstOrDefault(E => E.XID == xid); if (Item == null) { throw new NotFoundException(string.Format("No lead found with xid: '{0}'", xid)); } Result = EntityMapper.Map <CustomerExtended, CU_B_LEAD_EXT_AUS>(DBContext, Item); Result.CustomerTypeCode = "QL"; Result.StatusCode = "00"; //Force status to Active to avoid FOX issues return(Result); }
public ActionResult <CustomerExtended> Post([FromBody] Customer value, string XID, string campaignCode, string mediaTypeCode) { CheckCustomerAge(value?.Birthday); CU_B_ADDRESS_BOOK Item = EntityMapper.CreateEntity <CU_B_ADDRESS_BOOK>(); CU_B_ADDRESS_BOOK_EXT_AUS ItemExt = EntityMapper.CreateEntity <CU_B_ADDRESS_BOOK_EXT_AUS>(); CU_B_ACTIVITY activity = EntityMapper.CreateEntity <CU_B_ACTIVITY>(); CU_B_ACTIVITY_EXT_AUS activityExt = EntityMapper.CreateEntity <CU_B_ACTIVITY_EXT_AUS>(); EntityMapper.UpdateEntity(value, Item, ItemExt); CM_B_SHOP shop = DBContext.CM_B_SHOP.FirstOrDefault(E => E.SHOP_CODE == ItemExt.SHOP_CODE); //Add default values Item.CUSTOMER_TYPE_CODE = "QL"; Item.COUNTRY_CODE = Settings.Value.CountryCode; //Item.GENDER_CODE = Item.GENDER_CODE ?? "U"; Item.STATUS_CODE = "00"; //Force status to Active to avoid FOX issues ItemExt.CURRENT_FILE_LOCATION = "000"; //Head office ItemExt.CURRENT_LOCATION_TYPE_CODE = "00"; //Head office ItemExt.SHOP_CODE = "000"; //Head office Item.CUSTOMER_ID = XID; // Item.CUSTOMER_CODE = FoxDataService.GetNewCounter("CU_B_ADDRESS_BOOK", "CUSTOMER_CODE", ItemExt.SHOP_CODE, Item.USERINSERT).FORMATTEDVALUE; activityExt.CUSTOMER_CODE = activity.CUSTOMER_CODE = value.ID = ItemExt.CUSTOMER_CODE = Item.CUSTOMER_CODE; EntityMapper.InitializeEntityStandardFields(activity); EntityMapper.InitializeEntityStandardFields(activityExt); activity.ACTIVITY_TYPE_CODE = "RR"; activity.ACTIVITY_DATE = DateTime.Today; activity.LAPTOP_CODE = activityExt.LAPTOP_CODE = activity.SHOP_CODE = activityExt.SHOP_CODE = ItemExt.SHOP_CODE; activity.LOCATION_CODE = ItemExt.SHOP_CODE; activity.LOCATION_TYPE_CODE = ItemExt.SHOP_CODE == "000" ? "03" : "01"; activity.ACTIVITY_ID = activityExt.ACTIVITY_ID = FoxDataService.GetNewCounter("CU_B_ACTIVITY", "ACTIVITY_ID", ItemExt.SHOP_CODE, Item.USERINSERT).VALUE.GetValueOrDefault(); EntityMapper.CheckEntityRowId(activity, activityExt, Guid.NewGuid()); /* Disabled FK check * //Check for valid campaign * if (!string.IsNullOrWhiteSpace(campaignCode)) * { * CM_S_CAMPAIGN campaign = DBContext.CM_S_CAMPAIGN.FirstOrDefault(E => E.CAMPAIGN_CODE == campaignCode); * activity.CAMPAIGN_CODE = campaign?.CAMPAIGN_CODE; * } * //Check for valid mediatype * if (!string.IsNullOrWhiteSpace(mediaTypeCode)) * { * CM_S_MEDIATYPE mediaType = DBContext.CM_S_MEDIATYPE.FirstOrDefault(E => E.MEDIATYPE_CODE == mediaTypeCode); * activity.MEDIATYPE_CODE = mediaType?.MEDIATYPE_CODE; * } */ activity.CAMPAIGN_CODE = campaignCode; activity.MEDIATYPE_CODE = mediaTypeCode; DBContext.CU_B_ADDRESS_BOOK.Add(Item); DBContext.CU_B_ADDRESS_BOOK_EXT_AUS.Add(ItemExt); DBContext.CU_B_ACTIVITY.Add(activity); DBContext.CU_B_ACTIVITY_EXT_AUS.Add(activityExt); value.SaveData <CU_B_ADDRESS_BOOK>(DBContext, Item); if (value.Addresses != null) { int? AddressCounter = null; Address Addr = value.Addresses.FirstOrDefault(E => E.IsHomeAddress); if (Addr != null) { CreateAddressEntity(Addr, ref AddressCounter, Item.CUSTOMER_CODE); } Addr = value.Addresses.FirstOrDefault(E => !E.IsHomeAddress && E.IsInvoiceDefault); if (Addr != null) { CreateAddressEntity(Addr, ref AddressCounter, Item.CUSTOMER_CODE); } Addr = value.Addresses.FirstOrDefault(E => !E.IsHomeAddress && E.IsMailingDefault); if (Addr != null) { CreateAddressEntity(Addr, ref AddressCounter, Item.CUSTOMER_CODE); } Addr = value.Addresses.FirstOrDefault(E => !E.IsHomeAddress && E.IsOtherContact); if (Addr != null) { CreateAddressEntity(Addr, ref AddressCounter, Item.CUSTOMER_CODE); } Addr = value.Addresses.FirstOrDefault(E => !E.IsHomeAddress && E.IsHomeVisitDefault); if (Addr != null) { CreateAddressEntity(Addr, ref AddressCounter, Item.CUSTOMER_CODE); } } if (!string.IsNullOrWhiteSpace(XID)) //Creating customer from lead { CU_B_LEAD_EXT_AUS Lead = DBContext.CU_B_LEAD_EXT_AUS.FirstOrDefault(E => E.XID == XID); if (Lead != null) { Lead.CUSTOMER_CODE = Item.CUSTOMER_CODE; Lead.STATUS_CODE = "30"; EntityMapper.UpdateEntityStandardFields(Lead); } } DBContext.Database.GetDbConnection().Open(); try { var Transaction = DBContext.Database.GetDbConnection().BeginTransaction(); try { DBContext.Database.UseTransaction(Transaction); DBContext.SaveChanges(); StringBuilder SQL = new StringBuilder("p_CU_B_CUSTOMER_MAPPING_getxidfrom_Customer_Code"); /* * SQL.Append("@COMPANY_CODE = {0} "); * SQL.Append(", @DIVISION_CODE = {1}"); * SQL.Append(", @CUSTOMER_CODE = {2}"); * SQL.Append(", @DT_INSERT = {3}"); * SQL.Append(", @USERINSERT = {4}"); * SQL.Append(", @DT_UPDATE = {5}"); * SQL.Append(", @USERUPDATE = {6}"); */ object[] parameters = new object[] { Settings.Value.CompanyCode, Settings.Value.CompanyCode, Item.CUSTOMER_CODE, Item.DT_INSERT, Item.USERINSERT, Item.DT_UPDATE, Item.USERUPDATE }; var Connection = DBContext.Database.GetDbConnection(); var Command = Connection.CreateCommand(); Command.Transaction = Transaction; Command.CommandType = CommandType.StoredProcedure; Command.CommandText = SQL.ToString(); Command.Parameters.Add(new SqlParameter("@COMPANY_CODE", Settings.Value.CompanyCode)); Command.Parameters.Add(new SqlParameter("@DIVISION_CODE", Settings.Value.DivisionCode)); Command.Parameters.Add(new SqlParameter("@CUSTOMER_CODE", Item.CUSTOMER_CODE)); Command.Parameters.Add(new SqlParameter("@DT_INSERT", Item.DT_INSERT)); Command.Parameters.Add(new SqlParameter("@USERINSERT", Item.USERINSERT)); Command.Parameters.Add(new SqlParameter("@DT_UPDATE", Item.DT_UPDATE)); Command.Parameters.Add(new SqlParameter("@USERUPDATE", Item.USERUPDATE)); Command.ExecuteNonQuery(); //DBContext.Database.ExecuteSqlCommand(SQL.ToString(), parameters: parameters); Transaction.Commit(); } catch (Exception E) { Transaction.Rollback(); throw E; } return(Get(Item.CUSTOMER_CODE)); } finally { DBContext.Database.GetDbConnection().Close(); } }