public int CountEmail(RedeemPoint redeemPoint)
        {
            int totalEmail = 0;

            using (var db = Factory.DbEntities)
            {
                try
                {
                    ////OBSOLET
                    //totalEmail = db.RedeemPoint.Where(x => x.Email.ToLower().Contains(redeemPoint.Email.ToLower()))
                    //                .Where(x => x.ItemId.ToLower().Contains(redeemPoint.ItemId.ToLower()))
                    //                .Where(x => x.SubmitedDate == DateTime.Today)
                    //                .Count();

                    totalEmail = redeemPoint.Get(db).Count();
                }
                catch (Exception ex)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine(ex.Message);
                    //lg.LogWrite(sb.ToString());
                }
            }
            return(totalEmail);
        }
        public bool SubmitData(RedeemPoint redeemPoint, int MaxSubmit)
        {
            int countEmail = CountEmail(redeemPoint);

            if (countEmail >= MaxSubmit)
            {
                return(false);
            }
            else
            {
                //methodsendEmail
                Sitecore.Data.Items.Item items = Sitecore.Context.Database.GetItem(redeemPoint.ItemId);

                EmailContent EmailToCustomer = GetEmailContent(Sitecore.Feature.Library.Helper.Variables._emailTemplatetoCustomer); //Email Template Redeem Point To Customer
                EmailToCustomer.EmailBody = EmailToCustomer.EmailBody.Replace("[CustomerName]", redeemPoint.Fullname);
                EmailToCustomer.EmailBody = EmailToCustomer.EmailBody.Replace("[ItemName]", redeemPoint.ItemName);
                EmailToCustomer.EmailBody = EmailToCustomer.EmailBody.Replace("[Points]", items.Fields[Sitecore.Feature.Library.Templates.TreatsPointItem.Fields.Price].Value);
                LibraryHelpers.SendEmail(redeemPoint.Email, EmailToCustomer.EmailFrom, EmailToCustomer.Subject, EmailToCustomer.EmailBody); //Get Email To Customer

                EmailContent EmailToCustomerCare = GetEmailContent(Sitecore.Feature.Library.Helper.Variables._emailTemplatetoCustomerCare); //Email Template Redeem Point To Customer Care
                EmailToCustomerCare.EmailBody = EmailToCustomerCare.EmailBody.Replace("[ItemName]", redeemPoint.ItemName);
                EmailToCustomerCare.EmailBody = EmailToCustomerCare.EmailBody.Replace("[Points]", items.Fields[Sitecore.Feature.Library.Templates.TreatsPointItem.Fields.Price].Value);
                EmailToCustomerCare.EmailBody = EmailToCustomerCare.EmailBody.Replace("[CustomerName]", redeemPoint.Fullname);
                EmailToCustomerCare.EmailBody = EmailToCustomerCare.EmailBody.Replace("[CCNumber]", redeemPoint.CreditCardNumber);
                EmailToCustomerCare.EmailBody = EmailToCustomerCare.EmailBody.Replace("[PhoneNumber]", redeemPoint.MobileNumber);
                EmailToCustomerCare.EmailBody = EmailToCustomerCare.EmailBody.Replace("[Email]", redeemPoint.Email);
                LibraryHelpers.SendEmail(GetUserEmailTo(Sitecore.Feature.Library.Helper.Variables._emailCustomerCareTreatsPoint), EmailToCustomerCare.EmailFrom, EmailToCustomerCare.Subject, EmailToCustomerCare.EmailBody); //Get Customer Care Email
                Add(redeemPoint);
                return(true);
            }
        }
        public ActionResult SubmitReedemPoint(FormCollection formCollection)
        {
            if (System.Web.HttpContext.Current.Session[Variables._varEncryptedKey] == null)
            {
                return(SessionExpired());
            }

            var formData = DecryptObject(formCollection[PAYLOAD]);

            // decrypt from js
            string randomKey    = System.Web.HttpContext.Current.Session[Variables._varEncryptedKey].ToString();
            string itemId       = AESEncrytDecry.DecryptStringAES(randomKey, formData["itemId"]);
            string name         = AESEncrytDecry.DecryptStringAES(randomKey, formData["name"]);
            string creditcard   = AESEncrytDecry.DecryptStringAES(randomKey, formData["creditcard"]);
            string mobilenumber = AESEncrytDecry.DecryptStringAES(randomKey, formData["mobilenumber"]);
            string email        = AESEncrytDecry.DecryptStringAES(randomKey, formData["email"]);
            int    maxsubmit    = Convert.ToInt32(AESEncrytDecry.DecryptStringAES(randomKey, formData["maxsubmit"]));

            RedeemPoint entity     = new RedeemPoint();
            var         culture    = new System.Globalization.CultureInfo(SC.Context.Language.Name);
            var         properties = entity.GetType().GetProperties();

            for (int i = 0; i < properties.Length; i++)
            {
                try
                {
                    if (!string.IsNullOrWhiteSpace(AESEncrytDecry.DecryptStringAES(randomKey, formData[properties[i].Name])))
                    {
                        properties[i].SetValue(entity, Convert.ChangeType(AESEncrytDecry.DecryptStringAES(randomKey, formData[properties[i].Name]), properties[i].PropertyType, culture), null);
                    }
                }
                catch { /* just continue ignore this error */ }
            }

            entity.ID               = Guid.NewGuid();
            entity.ItemId           = itemId;
            entity.ItemName         = Repository.GetItemName(itemId);
            entity.Fullname         = name;
            entity.CreditCardNumber = creditcard;
            entity.MobileNumber     = mobilenumber;
            entity.Email            = email;
            entity.SubmitedDate     = DateTime.Now;

            bool result = Repository.SubmitData(entity, maxsubmit);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public void Add(RedeemPoint redeemPoint)
        {
            using (var db = Factory.DbEntities)
            {
                try
                {
                    ////OBSOLET
                    //db.RedeemPoint.Add(redeemPoint);
                    //db.SaveChanges();

                    redeemPoint.Insert(db);
                }
                catch (Exception ex)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine(ex.Message);
                    //lg.LogWrite(sb.ToString());
                }
            }
        }