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
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
            }
        }