/// <summary>
 /// Updates Proximity Reward based on the number of tiers set.
 /// </summary>
 private void UpdateProximityReward()
 {
     if (objOffer.NumbersOfTier < objProximityMessage.ProximityMessageTiers.Count)
     {
         List <ProximityMessageTier> tempPMTier = new List <ProximityMessageTier>();
         for (int i = 0; i < objOffer.NumbersOfTier; i++)
         {
             tempPMTier.Add(objProximityMessage.ProximityMessageTiers[i]);
         }
         objProximityMessage.ProximityMessageTiers = tempPMTier;
         m_ProximityMessageRewardService.CreateUpdateProximityMessageReward(objProximityMessage, OfferID, 9, RewardOptionID);
     }
     else if (objOffer.NumbersOfTier > objProximityMessage.ProximityMessageTiers.Count)
     {
         int i = objProximityMessage.ProximityMessageTiers.Count;
         ProximityMessageTier tempProximityTierData;
         for (; i < objOffer.NumbersOfTier; i++)
         {
             tempProximityTierData                    = new ProximityMessageTier();
             tempProximityTierData.TierLevel          = i + 1;
             tempProximityTierData.PMTierTranslations = new List <ProximityMessageTierTranslation>();
             tempProximityTierData.Message            = "";
             tempProximityTierData.TriggerValue       = Decimal.Parse("0");
             objProximityMessage.ProximityMessageTiers.Add(tempProximityTierData);
         }
     }
 }
 /// <summary>
 /// This method is called whenever new tier is created to display
 /// textarea for description.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void BindProximityMsgDesc(object sender, RepeaterItemEventArgs e)
 {
     if (IsMultiLanguageEnabled)
     {
         Repeater             childRepeater     = (Repeater)e.Item.FindControl("repProximityMsgDesc");
         ProximityMessageTier tempProximityTier = (ProximityMessageTier)e.Item.DataItem;
         if (tempProximityTier.PMTierTranslations.Count != Languages.Count)
         {
             ProximityMessageTierTranslation tempPMTierTranslation;
             foreach (var lan in Languages)
             {
                 if (!tempProximityTier.PMTierTranslations.Exists(l => l.LanguageId == lan.LanguageID))
                 {
                     tempPMTierTranslation            = new ProximityMessageTierTranslation();
                     tempPMTierTranslation.LanguageId = lan.LanguageID;
                     tempPMTierTranslation.Message    = "";
                     tempProximityTier.PMTierTranslations.Add(tempPMTierTranslation);
                 }
             }
         }
         childRepeater.DataSource = tempProximityTier.PMTierTranslations;
         childRepeater.DataBind();
     }
     else
     {
         List <ProximityMessageTier> tempProximityTier = new List <ProximityMessageTier>();
         Repeater childRepeater = (Repeater)e.Item.FindControl("repProximityMsgDesc");
         tempProximityTier.Add((ProximityMessageTier)e.Item.DataItem);
         childRepeater.DataSource = tempProximityTier;
         childRepeater.DataBind();
     }
 }
    /// <summary>
    /// Initializes or updates PM related data.
    /// </summary>
    private void SetProximityMessageForLoad()
    {
        if (objProximityMessage != null)
        {
        }
        else
        {
            objProximityMessage                       = new CMS.AMS.Models.ProximityMessage();
            objProximityMessage.Id                    = 0;
            objProximityMessage.RewardID              = RewardID;
            objProximityMessage.RewardOptionPhase     = Phase;
            objProximityMessage.RewardTypeID          = (int)DELIVERABLE_TYPES.PROXIMITY_MESSAGE;
            objProximityMessage.ProximityMessageTiers = new List <ProximityMessageTier>();

            ProximityMessageTier tempProxMessgTier;

            for (int i = 1; i <= objOffer.NumbersOfTier; i++)
            {
                tempProxMessgTier                    = new ProximityMessageTier();
                tempProxMessgTier.TierLevel          = i;
                tempProxMessgTier.PMTierTranslations = new List <ProximityMessageTierTranslation>();
                if (IsMultiLanguageEnabled)
                {
                    ProximityMessageTierTranslation tempPMTierTranslation;
                    foreach (var j in SystemSettings.GetAllActiveLanguages(Engines.UE))
                    {
                        tempPMTierTranslation = new ProximityMessageTierTranslation();
                        tempPMTierTranslation.ProximityMessageTierId = tempProxMessgTier.Id;
                        tempPMTierTranslation.LanguageId             = j.LanguageID;
                        tempPMTierTranslation.Message = "";
                        tempProxMessgTier.PMTierTranslations.Add(tempPMTierTranslation);
                    }
                }
                objProximityMessage.ProximityMessageTiers.Add(tempProxMessgTier);
            }
        }
        repProximityMsg.DataSource = objProximityMessage.ProximityMessageTiers;
        repProximityMsg.DataBind();
    }
    /// <summary>
    /// Updates the Proximity Reward object and saves the data.
    /// </summary>
    private void UpdateObjectAndSave()
    {
        bool IsNewPMR = (objProximityMessage.Id == 0);

        objProximityMessage.ProximityMessageTiers.Clear();
        objProximityMessage.RewardOptionPhase = Phase;
        objProximityMessage.RewardID          = IsNewPMR ? 0 : RewardID;
        objProximityMessage.Required          = false;
        objProximityMessage.RewardTypeID      = (int)DELIVERABLE_TYPES.PROXIMITY_MESSAGE;
        objProximityMessage.ThresholdTypeId   = Int32.Parse(ddlMessageType.SelectedValue);

        ProximityMessageTier tempProximityTierData;

        foreach (RepeaterItem pmItem in repProximityMsg.Items)
        {
            tempProximityTierData = new ProximityMessageTier();
            TextBox tempAwayDataTextbox = pmItem.FindControl("awaydata") as TextBox;
            TextBox tempMessage         = pmItem.FindControl("prmessage") as TextBox;

            tempProximityTierData.TriggerValue = tempAwayDataTextbox != null?Decimal.Parse(tempAwayDataTextbox.Text, CultureInfo.InvariantCulture) : Decimal.Parse("0");

            tempProximityTierData.TierLevel = pmItem.ItemIndex + 1;
            if (IsMultiLanguageEnabled)
            {
                tempProximityTierData.PMTierTranslations = new List <ProximityMessageTierTranslation>();
                ProximityMessageTierTranslation tempPMTierTranslation;
                string tempData = "";
                for (int i = 0; i < Languages.Count; i++)
                {
                    tempPMTierTranslation = new ProximityMessageTierTranslation();
                    tempData = Request.Form["repProximityMsg$ctl0" + pmItem.ItemIndex + "$repProximityMsgDesc$ctl0" + i + "$prmessage"];
                    if (i == 0)
                    {
                        tempProximityTierData.Message = tempData;
                    }

                    if (tempData != "")
                    {
                        tempPMTierTranslation.ProximityMessageTierId = tempProximityTierData.Id;
                        tempPMTierTranslation.LanguageId             = Languages[i].LanguageID;
                        tempPMTierTranslation.Message = tempData;
                        tempProximityTierData.PMTierTranslations.Add(tempPMTierTranslation);
                    }
                }
            }
            else
            {
                tempProximityTierData.Message            = Request.Form["repProximityMsg$ctl0" + pmItem.ItemIndex + "$repProximityMsgDesc$ctl00$prmessage"];
                tempProximityTierData.PMTierTranslations = new List <ProximityMessageTierTranslation>();
            }

            objProximityMessage.ProximityMessageTiers.Add(tempProximityTierData);
        }

        AMSResult <bool> result = m_ProximityMessageRewardService.CreateUpdateProximityMessageReward(objProximityMessage, OfferID.ConvertToLong(), 9, RewardOptionID);

        RewardID = objProximityMessage.RewardID.ConvertToInt32();
        //save the templates permission
        if (objOffer.IsTemplate)
        {
            //time to update the status bits for the templates
            int      form_Disallow_Edit = 0;
            string[] LockFieldsList     = null;

            form_Disallow_Edit = ucTemplateLockableFields.RewardLockStatus == true ? 1 : 0;
            if (ucTemplateLockableFields.ExceptionFields != null)
            {
                LockFieldsList = ucTemplateLockableFields.ExceptionFields.Select(x => x.ToString()).ToArray();
                m_Commondata.PurgeFieldLevelPermissions(AppName, objOffer.OfferID, RewardID);
                m_Commondata.UpdateDeliverableAndFieldLevelPermissions(RewardID, objOffer.OfferID, form_Disallow_Edit, LockFieldsList);
                LockFieldsList = ucTemplateLockableFields.RewardTemplateFieldSource.TemplateFieldList.Where(x => LockFieldsList.Contains(x.FieldId.ToString()) == false).Select(x => x.FieldId.ToString()).ToArray();
                m_Commondata.UpdateDeliverableAndUnlockFieldLevelPermissions(RewardID, objOffer.OfferID, form_Disallow_Edit == 1 ? 0 : 1, LockFieldsList);
            }
            else
            {
                m_Commondata.PurgeFieldLevelPermissions(AppName, objOffer.OfferID, RewardID);
            }
        }
        if (result.ResultType == AMSResultType.Success)
        {
            m_Commondata.QueryStr = "update CPE_Incentives with (RowLock) set LastUpdate=getdate(), LastUpdatedByAdminID=" + CurrentUser.AdminUser.ID + ", StatusFlag=1 where IncentiveID=" + OfferID + ";";
            m_Commondata.LRT_Execute();
            m_OAWService.ResetOfferApprovalStatus(OfferID);
            RegisterScript("Close", "window.close();");
        }
    }