public ActionResult ForgotPassword(User_Profile user_profile)
 {
     try
     {
         using (LaxNarroEntities db = new LaxNarroEntities())
         {
             var account = db.User_Profile.Where(a => a.EmailAddress == user_profile.EmailAddress).ToList();
             //var GetUserData = (db.User_Profile.Where(a => a.EmailAddress == email).ToList());
             string mailResult = "";
             if (account != null)
             {
                 mailResult = SendMail(account[0].EmailAddress, "~/EmailTemplate/ForgotPassword.html", account[0].FirstName,
                                       account[0].LastName, account[0].Password);
             }
             else
             {
                 ViewBag.message = ToasterMessage.Message(ToastType.error, "Invalid email");
             }
             if (mailResult == "success")
             {
                 ViewBag.message = ToasterMessage.Message(ToastType.success, "Password sent, check your email");
             }
         }
     }
     catch (Exception)
     {
     }
     return(View());
 }
        private void DeleteUnsubscribedUser(string userName)
        {
            try
            {
                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    DateTime dt            = DateTime.Today;
                    var      plan_id       = db.Plan_Master.FirstOrDefault(x => x.Plan == "Demo");
                    decimal  planID        = Convert.ToDecimal(plan_id.Plan_ID);
                    var      totalUserList = (from s in db.User_Transaction_Master
                                              join c in db.User_Profile on s.User_ID equals c.ID
                                              where s.PlanID == planID && s.End_Date <= dt && c.UserName == userName &&
                                              c.IsDeleted != "Deleted"
                                              select s.User_ID).ToList();

                    if (totalUserList.Count > 0)
                    {
                        var user = ctx.User_Profile.FirstOrDefault(x => x.UserName == userName);
                        user.IsDeleted = "Deleted";
                        ctx.SaveChanges();
                    }
                }
            }
            catch (Exception)
            {
                //throw;
            }
        }
        private void getAllExpiredPlanUsers()
        {
            try
            {
                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    ExpiredPlanUserMailLog expiredPlanUserMailLog = null;
                    DateTime dt = DateTime.Today;

                    var expiredPlanUsers = (from s in db.User_Transaction_Master
                                            where s.End_Date <= dt
                                            select s).ToList();

                    for (int i = 0; i < expiredPlanUsers.Count; i++)
                    {
                        decimal userId = Convert.ToDecimal(expiredPlanUsers[i].User_ID);

                        var user = ctx.User_Transaction_Master.
                                   Where(u => u.User_ID == userId)
                                   .OrderByDescending(u => u.Id).ToList();

                        var checkExisting = ctx.ExpiredPlanUserMailLogs.Where(x => x.UserID == userId).ToList();

                        if (checkExisting.Count == 0)
                        {
                            expiredPlanUserMailLog = new ExpiredPlanUserMailLog();

                            expiredPlanUserMailLog.UserID         = user[0].User_ID;
                            expiredPlanUserMailLog.ReminderType   = "N/A";
                            expiredPlanUserMailLog.ReminderDate   = null;
                            expiredPlanUserMailLog.ReminderStatus = null;

                            DateTime nextDueDate = Convert.ToDateTime(user[0].End_Date).AddMonths(6);
                            expiredPlanUserMailLog.NextReminderDueDate = nextDueDate;
                            expiredPlanUserMailLog.RecordOperationDate = dt;

                            db.ExpiredPlanUserMailLogs.Add(expiredPlanUserMailLog);
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception r)
            {
                //throw;
            }
        }
Пример #4
0
        //[ValidateAntiForgeryToken]
        public ActionResult PayNow(decimal planId)
        {
            try
            {
                decimal userId = Convert.ToDecimal(UserHelper.GetUserId());

                IEnumerable <Rate_Card> plan_master = from s in db.Rate_Card join b in db.Plan_Master
                                                      on s.Plan_Id equals b.Plan_ID
                                                      where b.Plan != "Demo"
                                                      select s;

                ViewBag.PM = plan_master;

                string amount = string.Empty;

                string planName = plan_master.Where(x => x.Plan_Id == planId).Select(x => x.Plan_Master.Plan).First();

                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    using (var transaction = ctx.Database.BeginTransaction())
                    {
                        var userTransaction = ctx.User_Transaction_Master.FirstOrDefault(x => x.User_ID == userId);

                        string desc = string.Empty;

                        if (planName == "Yearly")
                        {
                            desc = "Lex Narro Yearly Plan Subscription.";
                            //amount = "13.99";
                            amount = plan_master.Select(x => x.Amount).FirstOrDefault().ToString();
                        }
                        else
                        {
                            desc = "Lex Narro 2 Yearly Plan Subscription.";
                            //amount = "24.99";
                            amount = plan_master.Select(x => x.Amount).FirstOrDefault().ToString();
                        }

                        var apiContext = GetAPIContext();

                        var payment = new Payment
                        {
                            //For Sandbox testing
                            //experience_profile_id = "XP-3FDL-P42J-GUEG-25ZK",

                            //For live paypal account
                            experience_profile_id = "XP-R4X7-FQ49-PL4T-HLNR",

                            intent = "sale",

                            payer = new Payer
                            {
                                payment_method = "paypal"
                            },
                            transactions = new List <Transaction>
                            {
                                new Transaction
                                {
                                    description = desc,
                                    amount      = new Amount
                                    {
                                        currency = "AUD",
                                        total    = amount,
                                    },
                                    item_list = new ItemList
                                    {
                                        items = new List <Item>()
                                        {
                                            new Item()
                                            {
                                                description = "Lex Narro " + planName + " plan subscription.",
                                                currency    = "AUD",
                                                quantity    = "1",
                                                price       = amount
                                            }
                                        }
                                    }
                                }
                            },
                            redirect_urls = new RedirectUrls
                            {
                                return_url = Url.Action("Success", "Subscription", new { planId = planId }, Request.Url.Scheme),
                                cancel_url = Url.Action("Cancel", "Subscription", new { planId = planId }, Request.Url.Scheme)
                            }
                        };

                        Payment createdPayment = payment.Create(apiContext);

                        var approvalUrl = createdPayment.links
                                          .FirstOrDefault(x => x.rel.Equals("approval_url", StringComparison.OrdinalIgnoreCase));

                        return(Redirect(approvalUrl.href));
                    }
                }
            }
            catch (DbEntityValidationException e)
            {
                string errorMessage = string.Empty;

                foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);

                    foreach (DbValidationError ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                        errorMessage = ve.ErrorMessage;

                        TempData["message"] = ViewBag.message + ToasterMessage.Message(ToastType.error, errorMessage);
                    }
                }
                return(RedirectToAction("Index"));
            }
            catch (Exception rr)
            {
                TempData["message"] = ToasterMessage.Message(ToastType.error, "Something went wrong " + rr.ToString());
            }

            return(RedirectToAction("Index"));
        }
Пример #5
0
 public SubscriptionController()
 {
     db = new LaxNarroEntities();
     toastNotifications = new ToasterMessage();
 }
Пример #6
0
        public ActionResult Success(decimal planId, string payerId, string paymentId)
        {
            try
            {
                decimal userId = Convert.ToDecimal(UserHelper.GetUserId());

                //-----For sending Invoice mail------
                decimal recordId = 0;

                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    using (var transaction = ctx.Database.BeginTransaction())
                    {
                        int?maxInvoice = ctx.User_Transaction_Master.Max(u => u.Invoice_No);

                        Rate_Card rate_card = ctx.Rate_Card.Include(x => x.Plan_Master)
                                              .Where(m => m.Plan_Id == planId && m.Status == "Active").FirstOrDefault();

                        User_Transaction_Master userTransaction = new User_Transaction_Master();

                        IEnumerable <User_Transaction_Master> userAllTransaction = ctx.User_Transaction_Master
                                                                                   .Where(x => x.User_ID == userId);

                        // Set the payer for the payment
                        var paymentExecution = new PaymentExecution()
                        {
                            payer_id = payerId
                        };

                        // Identify the payment to execute
                        var payment = new Payment()
                        {
                            id = paymentId
                        };

                        var apiContext = GetAPIContext();

                        // Execute the Payment
                        var executedPayment = payment.Execute(apiContext, paymentExecution);

                        int?max = userAllTransaction.Max(u => (int?)u.Invoice_No);

                        User_Transaction_Master maxedInvoicedTransaction = userAllTransaction
                                                                           .FirstOrDefault(x => x.User_ID == userId && x.Invoice_No == max);

                        int?maxedInvoiceNo = ctx.User_Transaction_Master.Max(u => (int?)u.Invoice_No);

                        if (executedPayment.state == "approved")
                        {
                            //---------For new payment record (second time payment and so on)-------
                            if (maxedInvoicedTransaction.Payment_Status != "N/A")
                            {
                                userTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                                DateTime?endDate    = maxedInvoicedTransaction.End_Date;
                                string   strEndDate = string.Empty;
                                if (endDate != null)
                                {
                                    strEndDate = endDate.ToString();
                                }

                                userTransaction.Start_Date = Convert.ToDateTime(strEndDate);

                                if (rate_card.Plan_Master.Plan == "Yearly")
                                {
                                    userTransaction.End_Date = userTransaction.Start_Date.AddYears(1);
                                }
                                else
                                {
                                    userTransaction.End_Date = userTransaction.Start_Date.AddYears(2);
                                }

                                if (maxInvoice == null)
                                {
                                    userTransaction.Invoice_No = 1;
                                }
                                else
                                {
                                    userTransaction.Invoice_No = maxInvoice + 1;
                                }

                                userTransaction.Payment_Date = DateTime.Today;

                                userTransaction.Payment_Method = "Online";
                                userTransaction.Payment_Status = "Paid";
                                userTransaction.Paypal_PayerId = payerId;
                                userTransaction.PlanID         = rate_card.Plan_Id;
                                userTransaction.Rate_ID        = rate_card.Rate_Id;

                                userTransaction.Status             = "Active";
                                userTransaction.Transaction_Status = executedPayment.state;
                                userTransaction.Transection_ID     = executedPayment.id;
                                userTransaction.User_ID            = userId;

                                ctx.User_Transaction_Master.Add(userTransaction);
                                ctx.SaveChanges();

                                recordId = userTransaction.Id;
                            }

                            //---------For updating the demo record (First time payment)-------
                            else
                            {
                                maxedInvoicedTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                                if (rate_card.Plan_Master.Plan == "Yearly")
                                {
                                    maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(1);
                                }
                                else
                                {
                                    maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(2);
                                }

                                if (maxInvoice == null)
                                {
                                    maxedInvoicedTransaction.Invoice_No = 1;
                                }
                                else
                                {
                                    maxedInvoicedTransaction.Invoice_No = maxInvoice + 1;
                                }

                                maxedInvoicedTransaction.Payment_Date = DateTime.Today;

                                maxedInvoicedTransaction.Payment_Method = "Online";
                                maxedInvoicedTransaction.Payment_Status = "Paid";
                                maxedInvoicedTransaction.Paypal_PayerId = payerId;
                                maxedInvoicedTransaction.PlanID         = rate_card.Plan_Id;
                                maxedInvoicedTransaction.Rate_ID        = rate_card.Rate_Id;

                                //DateTime? endDate = maxedInvoicedTransaction.End_Date;
                                //string strEndDate = string.Empty;
                                //if (endDate != null)
                                //    strEndDate = endDate.ToString();
                                maxedInvoicedTransaction.Start_Date = DateTime.Today;

                                maxedInvoicedTransaction.Status             = "Active";
                                maxedInvoicedTransaction.Transaction_Status = executedPayment.state;
                                maxedInvoicedTransaction.Transection_ID     = executedPayment.id;
                                maxedInvoicedTransaction.User_ID            = userId;

                                ctx.Entry(maxedInvoicedTransaction).State = EntityState.Modified;
                                ctx.SaveChanges();

                                recordId = maxedInvoicedTransaction.Id;
                            }

                            PaypalResponse paypalResponse = new PaypalResponse
                            {
                                user_id            = userId,
                                Paypal_ReferenceId = executedPayment.id,
                                intent             = executedPayment.intent,
                                payer          = Convert.ToString(executedPayment.payer),
                                payee          = Convert.ToString(executedPayment.payee),
                                note_to_payer  = executedPayment.note_to_payer,
                                update_time    = executedPayment.update_time,
                                create_time    = executedPayment.create_time,
                                response_state = executedPayment.state,
                                failure_reason = executedPayment.failure_reason
                            };

                            ctx.PaypalResponses.Add(paypalResponse);
                            ctx.SaveChanges();

                            transaction.Commit();

                            MailLog user = ctx.MailLogs.FirstOrDefault(x => x.UserID == userId);
                            user.LastReminderStatus = "Deactive";
                            ctx.SaveChanges();
                        }

                        Thread thread = new Thread(() => SendInvoice(recordId));
                        thread.Start();

                        User_Profile userMail = ctx.User_Profile.Where(p => p.ID == userId).FirstOrDefault();

                        Thread thread2 = new Thread(() => SendMail(userMail.FirstName, userMail.LastName, userMail.EmailAddress, "",
                                                                   "Lexnarro - Subscription Successful", "~/EmailTemplate/SubscriptionMail.html"));
                        thread2.Start();

                        //SendMail(userMail.FirstName, userMail.LastName, userMail.EmailAddress, "",
                        //    "Lexnarro - Subscription Successful", "~/EmailTemplate/SubscriptionMail.html");

                        TempData["message"] = ToasterMessage.Message(ToastType.success, "Subscription successful. Thank you.");
                    }
                }
            }

            catch (DbEntityValidationException e)
            {
                string errorMessage = string.Empty;

                foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);

                    foreach (DbValidationError ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                        errorMessage = ve.ErrorMessage;

                        TempData["message"] = ViewBag.message + ToasterMessage.Message(ToastType.error, errorMessage);
                    }
                }
            }

            catch (Exception r)
            {
                TempData["message"] = ToasterMessage.Message(ToastType.error, "Something went wrong");
            }
            return(RedirectToAction("Index"));
        }
Пример #7
0
        public ReturnData DoCarryOver(string financialYear, string ids, string units, string userId, string stateId)
        {
            decimal unts            = 0;
            string  result          = string.Empty;
            decimal user_Id         = Convert.ToDecimal(userId);
            decimal enrolledStateId = Convert.ToDecimal(stateId);

            decimal?hoursRemoved = 0;
            decimal?unitsRemoved = 0;

            ReturnData rd = new ReturnData();

            try
            {
                string nextFinancialYear = GetNewFinancialYear(financialYear);

                ids = ids.Trim('\\', '"', '[', ']');

                string resultIds = ids.RemoverStrs(new[] { "\\", "\"", "[", "]" });

                string resultUnits = units.RemoverStrs(new[] { "\\", "\"", "[", "]" });

                string[] carryOverIds = resultIds.Split(',');

                string[] carryOverUnitsList = resultUnits.Split(',');

                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    using (DbContextTransaction transaction = ctx.Database.BeginTransaction())
                    {
                        decimal?carryOverUnits = ctx.State_Rule3_Marriage.Include(x => x.Rule3_ID)
                                                 .Where(x => x.StateID == enrolledStateId).Select(x => x.Rule3_Master.CarryOverUnits).First();

                        foreach (string item in carryOverUnitsList)
                        {
                            if (Convert.ToDecimal(item) <= 0)
                            {
                                //result = "Error - Please select units more then 0 (zero)";
                                transaction.Dispose();
                                rd.Status     = "Error";
                                rd.Message    = "Please select units more then 0 (Zero)";
                                rd.Requestkey = "DoCarryOver";
                                return(rd);
                            }
                            unts = unts + Convert.ToDecimal(item);
                        }

                        if (unts > carryOverUnits)
                        {
                            transaction.Dispose();
                            rd.Status     = "Error";
                            rd.Message    = "Selected units are more then the allowed units for carry over";
                            rd.Requestkey = "DoCarryOver";
                            return(rd);
                        }

                        //if (unts > carryOverUnits)
                        //{
                        //    transaction.Dispose();
                        //    rd.Status = "Error";
                        //    rd.Message = "Selected units are greater then allowed no. of units";
                        //    rd.Requestkey = "DoCarryOver";
                        //    return rd;
                        //}

                        for (int j = 0; j < carryOverIds.Length; j++)
                        {
                            decimal id = Convert.ToDecimal(carryOverIds[j]);

                            User_Training_Transaction trainingToCreate       = new User_Training_Transaction();
                            User_Training_Status      trainingStatusToCreate = new User_Training_Status();

                            //Getting old records to update after carry over and creating new carried over records with same values as before
                            //User_Training_Transaction utt = ctx.User_Training_Transaction.Find(id);
                            //User_Training_Status uts = ctx.User_Training_Status.Where(x=>x.Training_Transaction_ID == id).First();
                            List <CarryOverTraining> userTraining = ctx.User_Training_Status.Include(x => x.User_Profile).Include(x => x.Category_Master)
                                                                    .Include(x => x.Activity_Master).Include(x => x.Sub_Activity_Master).Include(x => x.User_Training_Transaction)
                                                                    .Where(x => x.User_Training_Transaction.Id == id && x.Financial_Year == financialYear).Select(a => new CarryOverTraining()
                            {
                                TrainingStatusId      = a.Id,
                                TrainingTransactionId = a.User_Training_Transaction.Id,
                                User_Id                     = a.User_Id,
                                Date                        = a.User_Training_Transaction.Date,
                                State_Id                    = a.User_Training_Transaction.State_Id,
                                Category_Id                 = a.Category_Id,
                                Activity_Id                 = a.Activity_Id,
                                SubActivity_Id              = a.SubActivity_Id,
                                Hours                       = a.User_Training_Transaction.Hours,
                                Provider                    = a.User_Training_Transaction.Provider,
                                Financial_Year              = a.Financial_Year,
                                Your_Role                   = a.User_Training_Transaction.Your_Role,
                                Forwardable                 = a.User_Training_Transaction.Forwardable,
                                Has_been_Forwarded          = a.User_Training_Transaction.Has_been_Forwarded,
                                Descrption                  = a.User_Training_Transaction.Descrption,
                                UploadedFile                = a.User_Training_Transaction.UploadedFile,
                                UploadedFileName            = a.User_Training_Transaction.UploadedFileName,
                                Received_By_Forwarding      = a.Received_By_Forwarding,
                                Units_Done                  = a.Units_Done,
                                Min_Required_Category_Units = a.Min_Required_Category_Units
                            }).AsEnumerable().ToList();

                            decimal? activityId    = userTraining.Select(y => y.Activity_Id).First();
                            decimal? categoryId    = userTraining.Select(y => y.Category_Id).First();
                            decimal? subactivityId = userTraining.Select(y => y.SubActivity_Id).First();
                            DateTime?date          = userTraining.Select(y => y.Date).First();

                            //getting hour-units rule to create new hours done according to seleted units
                            IEnumerable <StateActivity__with_Rule2> hourUnits = ctx.StateActivity__with_Rule2
                                                                                .Include(x => x.Rule2_Master)
                                                                                .Where(x => x.ActivityID == activityId && x.StateID == enrolledStateId);

                            string hourRule = hourUnits.Select(x => x.Rule2_Master.Name).First();


                            #region Old carried over records
                            ///Getting old carried over record if any so that we can check if
                            ///same carried over record is already is in database so that
                            ///we will update old carried over record or we will create a new one.


                            List <User_Training_Status> oldCarriedOverRecord = ctx.User_Training_Status.Where(x => x.Financial_Year == nextFinancialYear &&
                                                                                                              x.Activity_Id == activityId && x.SubActivity_Id == subactivityId && x.Category_Id == categoryId &&
                                                                                                              x.User_Training_Transaction.Date == date && x.User_Id == user_Id &&
                                                                                                              x.Received_By_Forwarding == "Yes").ToList();

                            if (oldCarriedOverRecord.Count > 0)//Case to update old carry over record.
                            {
                                decimal statusId      = oldCarriedOverRecord.Select(x => x.Id).First();
                                decimal transactionId = oldCarriedOverRecord.Select(x => x.Training_Transaction_ID).First();
                                User_Training_Transaction oldCarriedRecord       = ctx.User_Training_Transaction.Find(transactionId);
                                User_Training_Status      oldCarriedStatusRecord = ctx.User_Training_Status.Find(statusId);

                                //Creating new record i.e carried over record
                                if (hourRule == "1 Unit = 1 Hr")
                                {
                                    if (carryOverUnitsList[j].Contains(".5"))
                                    {
                                        result = "Error - .5 in this category, not allowed";
                                        transaction.Dispose();
                                        rd.Status     = "Error";
                                        rd.Message    = "*.5 units are not allowed in this category";
                                        rd.Requestkey = "DoCarryOver";
                                        return(rd);
                                    }
                                    else
                                    {
                                        oldCarriedRecord.Hours            = oldCarriedRecord.Hours + Convert.ToDecimal(carryOverUnitsList[j]);
                                        oldCarriedStatusRecord.Units_Done =
                                            oldCarriedStatusRecord.Units_Done + Convert.ToDecimal(carryOverUnitsList[j]);

                                        hoursRemoved = unitsRemoved = Convert.ToDecimal(carryOverUnitsList[j]);
                                    }
                                }

                                if (hourRule == "1 Unit = 2 Hr")
                                {
                                    oldCarriedRecord.Hours            = oldCarriedRecord.Hours + (Convert.ToDecimal(carryOverUnitsList[j]) * 2);
                                    oldCarriedStatusRecord.Units_Done =
                                        oldCarriedStatusRecord.Units_Done + Convert.ToDecimal(carryOverUnitsList[j]);

                                    hoursRemoved = Convert.ToDecimal(carryOverUnitsList[j]) * 2;
                                    unitsRemoved = Convert.ToDecimal(carryOverUnitsList[j]);
                                }

                                ctx.Entry(oldCarriedStatusRecord).State = EntityState.Modified;
                                ctx.SaveChanges();

                                ctx.Entry(oldCarriedRecord).State = EntityState.Modified;
                                ctx.SaveChanges();

                                //var allTraningUnitss = ctx.User_Training_Status
                                //    .Where(x => x.User_Id == user_Id && x.Financial_Year == financialYear).Select(x => x.Units_Done).Sum();

                                //if (allTraningUnitss < 10)
                                //{
                                //    result = "Error - minimum";
                                //    transaction.Dispose();
                                //    rd.Status = "Error";
                                //    rd.Message = "Minimum 10 units should be left in this financial year.";
                                //    rd.Requestkey = "DoCarryOver";
                                //    return rd;
                                //}

                                //result = "Success";
                            }
                            #endregion

                            else
                            {
                                //Creating new record i.e carried over record
                                if (hourRule == "1 Unit = 1 Hr")
                                {
                                    if (carryOverUnitsList[j].Contains(".5"))
                                    {
                                        transaction.Dispose();
                                        rd.Status     = "Error";
                                        rd.Message    = "*.5 units are not allowed in this category";
                                        rd.Requestkey = "DoCarryOver";
                                        return(rd);
                                    }
                                    else
                                    {
                                        trainingToCreate.Hours = trainingStatusToCreate.Units_Done = Convert.ToDecimal(carryOverUnitsList[j]);
                                        hoursRemoved           = unitsRemoved = Convert.ToDecimal(carryOverUnitsList[j]);
                                    }
                                }

                                if (hourRule == "1 Unit = 2 Hr")
                                {
                                    trainingToCreate.Hours            = Convert.ToDecimal(carryOverUnitsList[j]) * 2;
                                    trainingStatusToCreate.Units_Done = Convert.ToDecimal(carryOverUnitsList[j]);

                                    hoursRemoved = Convert.ToDecimal(carryOverUnitsList[j]) * 2;
                                    unitsRemoved = Convert.ToDecimal(carryOverUnitsList[j]);
                                }

                                trainingToCreate.Activity_Id        = userTraining.Select(y => y.Activity_Id).First();
                                trainingToCreate.Category_Id        = userTraining.Select(y => y.Category_Id).First();
                                trainingToCreate.Date               = userTraining.Select(y => y.Date).First();
                                trainingToCreate.Descrption         = userTraining.Select(y => y.Descrption).First();
                                trainingToCreate.Financial_Year     = nextFinancialYear;
                                trainingToCreate.Forwardable        = null;
                                trainingToCreate.Has_been_Forwarded = null;
                                trainingToCreate.Provider           = userTraining.Select(y => y.Provider).First();
                                trainingToCreate.State_Id           = userTraining.Select(y => y.State_Id).First();
                                trainingToCreate.SubActivity_Id     = userTraining.Select(y => y.SubActivity_Id).First();
                                trainingToCreate.UploadedFile       = userTraining.Select(y => y.UploadedFile).First();
                                trainingToCreate.UploadedFileName   = userTraining.Select(y => y.UploadedFileName).First();
                                trainingToCreate.User_Id            = userTraining.Select(y => y.User_Id).First();
                                trainingToCreate.Your_Role          = userTraining.Select(y => y.Your_Role).First();

                                ctx.User_Training_Transaction.Add(trainingToCreate);
                                ctx.SaveChanges();

                                decimal newly_inserted_id = trainingToCreate.Id; //New carried over record insertion successful.

                                //Now inserting new carried over record in training_transaction_status
                                trainingStatusToCreate.Activity_Id    = userTraining.Select(y => y.Activity_Id).First();
                                trainingStatusToCreate.Category_Id    = userTraining.Select(y => y.Category_Id).First();
                                trainingStatusToCreate.Financial_Year = nextFinancialYear;
                                trainingStatusToCreate.Min_Required_Category_Units = userTraining.Select(y => y.Min_Required_Category_Units).First();
                                trainingStatusToCreate.Received_By_Forwarding      = "Yes";
                                trainingStatusToCreate.SubActivity_Id          = userTraining.Select(y => y.SubActivity_Id).First();
                                trainingStatusToCreate.Training_Transaction_ID = newly_inserted_id;
                                trainingStatusToCreate.User_Id = userTraining.Select(y => y.User_Id).First();

                                ctx.User_Training_Status.Add(trainingStatusToCreate);
                                ctx.SaveChanges();
                            }

                            //Carried over records insertion over. Now update part.

                            //Editing units and hours of old record to update accordingly.
                            //First User_Training_Transaction
                            User_Training_Transaction utt = ctx.User_Training_Transaction.Find(userTraining.Select(y => y.TrainingTransactionId).First());
                            utt.Hours = utt.Hours - hoursRemoved;
                            utt.Has_been_Forwarded = "Yes";
                            ctx.Entry(utt).State   = EntityState.Modified;
                            ctx.SaveChanges();

                            //Now User_Training_Status
                            User_Training_Status uts = ctx.User_Training_Status.Find(userTraining.Select(y => y.TrainingStatusId).First());
                            uts.Units_Done = uts.Units_Done - unitsRemoved;

                            //if (uts.Units_Done == 0.5m)
                            //{
                            //    transaction.Dispose();
                            //    rd.Status = "Error";
                            //    rd.Message = "Less then minimum allowed units(1) left after this carry over which is not allowed";
                            //    rd.Requestkey = "DoCarryOver";
                            //    return rd;
                            //}

                            ctx.Entry(uts).State = EntityState.Modified;
                            ctx.SaveChanges();

                            decimal?existedCompletedCategories = ctx.User_Training_Status
                                                                 .Include(x => x.Category_Master).Include(x => x.User_Training_Transaction)
                                                                 .Where(x => x.Category_Id == uts.Category_Id &&
                                                                        x.Financial_Year == financialYear &&
                                                                        x.User_Id == user_Id).Select(x => x.Units_Done).Sum();

                            if (existedCompletedCategories < 1)
                            {
                                result = "Error - minimum";
                                transaction.Dispose();
                                rd.Status     = "Error";
                                rd.Message    = "Less then minimum allowed units(i.e 1) left after this carry over which is not allowed";
                                rd.Requestkey = "DoCarryOver";
                                return(rd);
                            }

                            var allTraningUnitss = ctx.User_Training_Status
                                                   .Where(x => x.User_Id == user_Id && x.Financial_Year == financialYear).Select(x => x.Units_Done).Sum();

                            if (allTraningUnitss < 10)
                            {
                                result = "Error - minimum";
                                transaction.Dispose();
                                rd.Status     = "Error";
                                rd.Message    = "Minimum 10 units should be left in this financial year.";
                                rd.Requestkey = "DoCarryOver";
                                return(rd);
                            }

                            result = "Success";
                        }

                        transaction.Commit();

                        rd.Status     = "Success";
                        rd.Message    = "Selected units are carried over successfully.";
                        rd.Requestkey = "DoCarryOver";
                        return(rd);
                    }
                }
            }
            catch (Exception ee)
            {
                rd.Status     = "Error";
                rd.Message    = "Something went wrong." + ee.ToString();
                rd.Requestkey = "DoCarryOver";
                return(rd);
            }
        }
Пример #8
0
 public TrainingHistoryController()
 {
     db = new LaxNarroEntities();
     toastNotifications = new ToasterMessage();
 }
Пример #9
0
 public InvoiceController()
 {
     db = new LaxNarroEntities();
 }
Пример #10
0
        private void CheckSubscriptionStatusAndDoStuff()
        {
            try
            {
                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    DateTime dt = DateTime.Today;

                    var expiredPlanUsers = (from s in db.ExpiredPlanUserMailLogs
                                            where s.NextReminderDueDate <= dt
                                            select s).ToList();

                    User_Transaction_Master userTransaction = db.User_Transaction_Master.Include(u => u.User_Profile).
                                                              Include(u => u.Rate_Card).Include(u => u.Plan_Master).Where(u => u.Id == expiredPlanUsers[0].UserID).SingleOrDefault();

                    for (int i = 0; i < expiredPlanUsers.Count; i++)
                    {
                        switch (expiredPlanUsers[i].ReminderType)
                        {
                        case "N/A":

                            // Write Code to Sent Reminder One.

                            //________________________________

                            expiredPlanUsers[i].UserID              = expiredPlanUsers[i].UserID;
                            expiredPlanUsers[i].ReminderType        = "First";
                            expiredPlanUsers[i].ReminderDate        = dt;
                            expiredPlanUsers[i].ReminderStatus      = "Sent";
                            expiredPlanUsers[i].NextReminderDueDate = Convert.ToDateTime(expiredPlanUsers[i].NextReminderDueDate).AddMonths(5);
                            expiredPlanUsers[i].RecordOperationDate = dt;

                            db.Entry(expiredPlanUsers[i]).State = EntityState.Modified;
                            db.SaveChanges();

                            SendResubMail(userTransaction.User_Profile.FirstName, userTransaction.User_Profile.LastName,
                                          userTransaction.User_Profile.EmailAddress, userTransaction.User_ID, userTransaction.End_Date, "~/EmailTemplate/ResubscriptionMail.html");
                            break;


                        case "First":

                            // Write Code to Sent Reminder Two.

                            //________________________________

                            expiredPlanUsers[i].UserID              = expiredPlanUsers[i].UserID;
                            expiredPlanUsers[i].ReminderType        = "Second";
                            expiredPlanUsers[i].ReminderDate        = dt;
                            expiredPlanUsers[i].ReminderStatus      = "Sent";
                            expiredPlanUsers[i].NextReminderDueDate = Convert.ToDateTime(expiredPlanUsers[i].NextReminderDueDate).AddMonths(1).AddDays(-1);
                            expiredPlanUsers[i].RecordOperationDate = dt;

                            db.Entry(expiredPlanUsers[i]).State = EntityState.Modified;
                            db.SaveChanges();

                            SendResubMail(userTransaction.User_Profile.FirstName, userTransaction.User_Profile.LastName,
                                          userTransaction.User_Profile.EmailAddress, userTransaction.User_ID, userTransaction.End_Date, "~/EmailTemplate/ResubscriptionMail.html");
                            break;
                        }
                    }
                }
            }
            catch (Exception r)
            {
                //throw;
            }
        }
Пример #11
0
 public DownloadAndEmailService()
 {
     db = new LaxNarroEntities();
 }
        public ReturnData PostTransaction(string email, string Plan_ID, string payerId, string Rate_Id,
                                          string paymentId, string Amount, string Transection_ID)
        {
            ReturnData rd = new ReturnData();

            if (email == string.Empty || Plan_ID == string.Empty || payerId == string.Empty || paymentId == string.Empty ||
                Rate_Id == string.Empty || Amount == string.Empty || Transection_ID == string.Empty)
            {
                rd.Status     = "Failure";
                rd.Message    = "Missing Parameters";
                rd.Requestkey = "PostTransactions";
                return(rd);
            }

            try
            {
                decimal userId = db.User_Profile.Where(x => x.EmailAddress == email).Select(x => x.ID).First();

                //-----For sending Invoice mail------
                decimal recordId = 0;

                decimal planId = Convert.ToDecimal(Plan_ID);

                using (LaxNarroEntities ctx = new LaxNarroEntities())
                {
                    using (var transaction = ctx.Database.BeginTransaction())
                    {
                        int?maxInvoice = ctx.User_Transaction_Master.Max(u => u.Invoice_No);

                        Rate_Card rate_card = ctx.Rate_Card.Include(x => x.Plan_Master)
                                              .Where(m => m.Plan_Id == planId && m.Status == "Active" && m.Plan_Master.Plan != "Demo").FirstOrDefault();

                        if (rate_card == null)
                        {
                            rd.Status     = "Failure";
                            rd.Message    = "Invalid Plan (Demo)";
                            rd.Requestkey = "PostTransactions";
                            return(rd);
                        }


                        //if(rate_card.Amount !=Convert.ToDecimal(Amount))
                        //{
                        //    PaypalResponse paypalResponse1 = new PaypalResponse
                        //    {
                        //        user_id = userId,
                        //        Paypal_ReferenceId = paymentId,
                        //        intent = "sale",
                        //        payer = "Android",
                        //        payee = string.Empty,
                        //        note_to_payer = "From Android",
                        //        update_time = Convert.ToString(DateTime.Today),
                        //        create_time = Convert.ToString(DateTime.Today),
                        //        response_state = "created",
                        //        failure_reason = "Invalid Amount"
                        //    };

                        //    ctx.PaypalResponses.Add(paypalResponse1);
                        //    ctx.SaveChanges();

                        //    transaction.Commit();


                        //    rd.Status = "Failure";
                        //    rd.Message = "Invalid Amount";
                        //    rd.Requestkey = "PostTransactions";
                        //    return rd;


                        //}



                        User_Transaction_Master userTransaction = new User_Transaction_Master();

                        List <User_Transaction_Master> userAllTransaction = ctx.User_Transaction_Master
                                                                            .Where(x => x.User_ID == userId).ToList();

                        // Set the payer for the payment
                        var paymentExecution = new PaymentExecution()
                        {
                            payer_id = payerId
                        };

                        // Identify the payment to execute
                        var payment = new Payment()
                        {
                            id = paymentId
                        };

                        //var apiContext = GetAPIContext();

                        // Execute the Payment
                        //var executedPayment = payment.Execute(apiContext, paymentExecution);

                        int?max = userAllTransaction.Max(u => (int?)u.Invoice_No);

                        User_Transaction_Master maxedInvoicedTransaction = userAllTransaction
                                                                           .FirstOrDefault(x => x.User_ID == userId && x.Invoice_No == max);

                        int?maxedInvoiceNo = ctx.User_Transaction_Master.Max(u => (int?)u.Invoice_No);

                        //if (executedPayment.state == "approved")
                        //{
                        //---------For new payment record (second time payment and so on)-------
                        if (maxedInvoicedTransaction.Payment_Status != "N/A")
                        {
                            userTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                            DateTime?endDate    = maxedInvoicedTransaction.End_Date;
                            string   strEndDate = string.Empty;
                            if (endDate != null)
                            {
                                strEndDate = endDate.ToString();
                            }

                            userTransaction.Start_Date = Convert.ToDateTime(strEndDate);

                            if (rate_card.Plan_Master.Plan == "Yearly")
                            {
                                userTransaction.End_Date = userTransaction.Start_Date.AddYears(1);
                            }
                            else
                            {
                                userTransaction.End_Date = userTransaction.Start_Date.AddYears(2);
                            }

                            if (maxInvoice == null)
                            {
                                userTransaction.Invoice_No = 1;
                            }
                            else
                            {
                                userTransaction.Invoice_No = maxInvoice + 1;
                            }

                            userTransaction.Payment_Date = DateTime.Today;

                            userTransaction.Payment_Method = "Online";
                            userTransaction.Payment_Status = "Paid";
                            userTransaction.Paypal_PayerId = payerId;
                            userTransaction.PlanID         = rate_card.Plan_Id;
                            userTransaction.Rate_ID        = rate_card.Rate_Id;

                            userTransaction.Status             = "Active";
                            userTransaction.Transaction_Status = "approved";
                            userTransaction.Transection_ID     = Transection_ID;
                            userTransaction.User_ID            = userId;

                            ctx.User_Transaction_Master.Add(userTransaction);
                            ctx.SaveChanges();

                            recordId = userTransaction.Id;

                            rd.Status     = "Success";
                            rd.Message    = "Transaction Saved";
                            rd.Requestkey = "PostTransactions";
                            //return rd;
                        }

                        //---------For updating the demo record (First time payment)-------
                        else
                        {
                            maxedInvoicedTransaction.Amount = Convert.ToDecimal(rate_card.Amount);

                            if (rate_card.Plan_Master.Plan == "Yearly")
                            {
                                maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(1);
                            }
                            else
                            {
                                maxedInvoicedTransaction.End_Date = DateTime.Today.AddYears(2);
                            }

                            if (maxInvoice == null)
                            {
                                maxedInvoicedTransaction.Invoice_No = 1;
                            }
                            else
                            {
                                maxedInvoicedTransaction.Invoice_No = maxInvoice + 1;
                            }

                            maxedInvoicedTransaction.Payment_Date = DateTime.Today;

                            maxedInvoicedTransaction.Payment_Method = "Online";
                            maxedInvoicedTransaction.Payment_Status = "Paid";
                            maxedInvoicedTransaction.Paypal_PayerId = payerId;
                            maxedInvoicedTransaction.PlanID         = rate_card.Plan_Id;
                            maxedInvoicedTransaction.Rate_ID        = rate_card.Rate_Id;

                            //DateTime? endDate = maxedInvoicedTransaction.End_Date;
                            //string strEndDate = string.Empty;
                            //if (endDate != null)
                            //    strEndDate = endDate.ToString();
                            maxedInvoicedTransaction.Start_Date = DateTime.Today;

                            maxedInvoicedTransaction.Status             = "Active";
                            maxedInvoicedTransaction.Transaction_Status = "approved";
                            maxedInvoicedTransaction.Transection_ID     = Transection_ID;
                            maxedInvoicedTransaction.User_ID            = userId;

                            ctx.Entry(maxedInvoicedTransaction).State = EntityState.Modified;
                            ctx.SaveChanges();

                            recordId = maxedInvoicedTransaction.Id;

                            rd.Status     = "Success";
                            rd.Message    = "Transaction Saved";
                            rd.Requestkey = "PostTransactions";
                            //return rd;
                        }

                        PaypalResponse paypalResponse = new PaypalResponse
                        {
                            user_id            = userId,
                            Paypal_ReferenceId = paymentId,
                            intent             = "sale",
                            payer          = "Android",
                            payee          = string.Empty,
                            note_to_payer  = "From Android",
                            update_time    = Convert.ToString(DateTime.Today),
                            create_time    = Convert.ToString(DateTime.Today),
                            response_state = "approved",
                            failure_reason = string.Empty
                        };

                        ctx.PaypalResponses.Add(paypalResponse);
                        ctx.SaveChanges();

                        MailLog user = ctx.MailLogs.FirstOrDefault(x => x.UserID == userId);
                        if (user != null)
                        {
                            user.LastReminderStatus = "Deactive";
                            ctx.SaveChanges();
                        }


                        transaction.Commit();
                    }

                    Thread thread = new Thread(() => SendInvoice(recordId, userId));
                    thread.Start();

                    User_Profile userMail = ctx.User_Profile.Where(p => p.ID == userId).FirstOrDefault();

                    Thread thread2 = new Thread(() => SendMail(userMail.FirstName, userMail.LastName, userMail.EmailAddress, "",
                                                               "Lexnarro - Subscription Successful", "~/EmailTemplate/SubscriptionMail.html"));
                    thread2.Start();

                    return(rd);
                }
            }

            //catch (DbEntityValidationException e)
            //{
            //    string errorMessage = string.Empty;

            //    foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
            //    {
            //        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            //            eve.Entry.Entity.GetType().Name, eve.Entry.State);

            //        foreach (DbValidationError ve in eve.ValidationErrors)
            //        {
            //            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
            //                ve.PropertyName, ve.ErrorMessage);
            //            errorMessage = ve.ErrorMessage;

            //            //TempData["message"] = ViewBag.message + ToasterMessage.Message(ToastType.error, errorMessage);
            //        }
            //    }
            //}

            catch (Exception r)
            {
                rd.Status     = "Failure";
                rd.Message    = "Something went wrong. Please contact administrator";
                rd.Requestkey = "PostTransactions";
                return(rd);
            }
        }
 public CarryOverController()
 {
     db = new LaxNarroEntities();
 }
Пример #14
0
 public AccountController()
 {
     db = new LaxNarroEntities();
 }
Пример #15
0
 public ReportsController()
 {
     db = new LaxNarroEntities();
 }
Пример #16
0
 public ActiveUsersController()
 {
     db = new LaxNarroEntities();
     toastNotifications = new ToasterMessage();
 }
Пример #17
0
 public AdminController()
 {
     db = new LaxNarroEntities();
 }