Ejemplo n.º 1
0
        public void DeductStudentCredits(string studentId, string classId, decimal hours)
        {
            UnitOfWork    uow           = new UnitOfWork();
            StudentCredit studentCredit = uow.StudentCredits.Get(a => a.StudentID == studentId).FirstOrDefault();

            if (studentCredit != null && studentCredit.TotalCredits >= hours)
            {
                string userId    = Session["UserId"].ToString();
                string className = uow.Classes.Get(x => x.ClassID == classId).FirstOrDefault().Title;
                studentCredit.TotalCredits = studentCredit.TotalCredits - hours;
                studentCredit.UsedCredits  = studentCredit.UsedCredits + hours;
                uow.StudentCredits.Update(studentCredit);
                StudentCreditLog studentCreditLog = new StudentCreditLog
                {
                    ClassID      = classId,
                    CreationDate = DateTime.Now,
                    CreditsUsed  = hours,
                    UserID       = studentId,
                    LogType      = "Deducted"
                };
                uow.StudentCreditLogs.Insert(studentCreditLog);
                uow.Save();
                uow.Dispose();
                //Common.AddNotification(Session["UserName"].ToString() + " accepted your offer", "",
                //        userId, studentId, "/student/classes", (int)NotificationType.Class);
                //payment deduction notification
                Common.AddNotification("Your wallet has been deducted with " + hours + " hours for class " + className, "",
                                       userId, studentId, "/student/wallet", (int)NotificationType.Wallet);
            }
        }
Ejemplo n.º 2
0
        public bool UpdateClassStatus(StudentClassUpdateParam model)
        {
            try
            {
                UnitOfWork   uow            = new UnitOfWork();
                StudentClass studentClasses = uow.StudentClasses.GetByID(Convert.ToInt32(model.StudentClassId));
                if (studentClasses != null)
                {
                    string requestStatus = "rejected";
                    studentClasses.Status      = (int)ClassJoinStatus.Rejected;
                    studentClasses.JoiningDate = DateTime.Now;
                    Class classDetail = uow.Classes.Get(x => x.ClassID == model.ClassId).FirstOrDefault();
                    if (model.Status == "accept")
                    {
                        //add student Credit Log and Deduct From StudentCredits
                        StudentCredit studentCredit = uow.StudentCredits.Get(a => a.StudentID == model.StudentId).FirstOrDefault();
                        if (studentCredit != null && studentCredit.TotalCredits >= classDetail.Duration)
                        {
                            studentCredit.TotalCredits = studentCredit.TotalCredits - classDetail.Duration;
                            studentCredit.UsedCredits  = studentCredit.UsedCredits + classDetail.Duration;
                            uow.StudentCredits.Update(studentCredit);
                            StudentCreditLog studentCreditLog = new StudentCreditLog
                            {
                                ClassID      = model.ClassId,
                                CreationDate = DateTime.Now,
                                CreditsUsed  = classDetail.Duration,
                                UserID       = model.StudentId,
                                LogType      = "Deducted"
                            };
                            uow.StudentCreditLogs.Insert(studentCreditLog);
                        }
                        else
                        {
                            return(false);
                        }
                        //End-----

                        studentClasses.Status = (int)ClassJoinStatus.Approved;
                        requestStatus         = "accepted";
                    }
                    uow.StudentClasses.Update(studentClasses);
                    uow.Save();
                    //request status notification
                    Common.AddNotification("Your request to join class " + classDetail.Title + " has been " + requestStatus, "",
                                           Session["UserId"].ToString(), model.StudentId, "/student/classes", (int)NotificationType.Class);
                    //payment deduction notification
                    Common.AddNotification("Your wallet has been deducted with " + classDetail.Duration + " hours for class " + classDetail.Title, "",
                                           Session["UserId"].ToString(), model.StudentId, "/student/wallet", (int)NotificationType.Wallet);
                    return(true);
                }
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Ejemplo n.º 3
0
        public ActionResult ProcessClass(string id)
        {
            UnitOfWork uow         = new UnitOfWork();
            Class      classDetail = uow.Classes.Get(x => x.ClassID == id).FirstOrDefault();

            if (classDetail != null && classDetail.Status != (int)ClassStatus.Completed)
            {
                using (var client = new HttpClient())
                {
                    var response = client.PostAsync("https://api.braincert.com/v2/getclassreport?apikey=EBqafLB3sAk1HeCDxr4Z&format=json&classId=" + classDetail.BrainCertId + "", null).Result;
                    response.EnsureSuccessStatusCode();
                    string responseBody                   = response.Content.ReadAsStringAsync().Result;
                    List <AttendanceReport> report        = JsonConvert.DeserializeObject <List <AttendanceReport> >(responseBody);
                    AttendanceReport        studentReport = report.Where(a => a.isTeacher == 0).ToList().FirstOrDefault();
                    User   student   = uow.Users.Get(x => x.AutoID == studentReport.userId).FirstOrDefault();
                    string studentId = student.UserID;
                    AttendenceReportModel attenReport = uow.TeacherRepository.GetUserInfo(studentReport.userId, id);
                    if (attenReport != null)
                    {
                        decimal classTime = Convert.ToDecimal(TimeSpan.Parse(studentReport.duration).TotalHours);
                        attenReport.CreditsConsumed    = String.Format("{0:0.00}", classTime);
                        attenReport.CreditsRefund      = String.Format("{0:0.00}", attenReport.CreditsUsed - classTime);
                        attenReport.CreditsConsumedInt = classTime;
                        attenReport.CreditsRefundInt   = attenReport.CreditsUsed - classTime;
                        attenReport.StudentClassId     = studentReport.userId;
                        //mark class as completed
                        classDetail.Status = (int)ClassStatus.Completed;
                        StudentCreditLog creditLog = new StudentCreditLog
                        {
                            ClassID      = classDetail.ClassID,
                            UserID       = id,
                            CreationDate = DateTime.Now,
                            CreditsUsed  = Math.Round(attenReport.CreditsRefundInt, 2),
                            LogType      = "Refund"
                        };
                        uow.StudentCreditLogs.Insert(creditLog);
                        StudentCredit credit = uow.StudentCredits.Get(a => a.StudentID == studentId).FirstOrDefault();
                        if (credit != null)
                        {
                            credit.LastUpdates  = DateTime.Now;
                            credit.TotalCredits = credit.TotalCredits + attenReport.CreditsRefundInt;
                            credit.UsedCredits  = credit.UsedCredits - attenReport.CreditsRefundInt;
                        }
                        UpdateTutorWallet(classDetail.TeacherID, classDetail.ClassID, classTime);
                        //payment refund notification
                        Common.AddNotification("Your wallet has beend refunded with " + creditLog.CreditsUsed, "",
                                               Session["UserId"].ToString(), studentId, "/student/wallet", (int)NotificationType.Refund);
                    }
                    uow.Save();
                }
            }
            return(RedirectToAction("classes", "tutor"));
        }
Ejemplo n.º 4
0
        public ActionResult ProcessAttendence(string id)
        {
            UnitOfWork uow        = new UnitOfWork();
            Class      classModel = uow.Classes.Get(x => x.ClassID == id).FirstOrDefault();

            if (classModel != null && classModel.Status != (int)ClassStatus.Completed)
            {
                using (var client = new HttpClient())
                {
                    var response = client.PostAsync("https://api.braincert.com/v2/getclassreport?apikey=EBqafLB3sAk1HeCDxr4Z&format=json&classId=" + classModel.BrainCertId + "", null).Result;
                    response.EnsureSuccessStatusCode();
                    string responseBody = response.Content.ReadAsStringAsync().Result;
                    List <AttendanceReport> myProduct     = JsonConvert.DeserializeObject <List <AttendanceReport> >(responseBody);
                    decimal teacherClassTime              = Convert.ToDecimal(TimeSpan.Parse(myProduct.Where(a => a.isTeacher == 1).FirstOrDefault().duration).TotalHours);
                    List <AttendanceReport>      students = myProduct.Where(a => a.isTeacher == 0).ToList();
                    List <AttendenceReportModel> listRep  = new List <AttendenceReportModel>();
                    bool IsProcessed = false;
                    for (int i = 0; i < students.Count; i++)
                    {
                        AttendenceReportModel attenReport = uow.TeacherRepository.GetUserInfo(students[i].userId, id);
                        if (attenReport != null)
                        {
                            IsProcessed = true;
                            decimal dec = Convert.ToDecimal(TimeSpan.Parse(students[i].duration).TotalHours);
                            attenReport.CreditsConsumed    = String.Format("{0:0.00}", dec);
                            attenReport.CreditsRefund      = String.Format("{0:0.00}", attenReport.CreditsUsed - dec);
                            attenReport.CreditsConsumedInt = dec;
                            attenReport.CreditsRefundInt   = attenReport.CreditsUsed - dec;
                            attenReport.StudentClassId     = students[i].userId;
                            listRep.Add(attenReport);
                        }
                    }
                    if (IsProcessed == true)
                    {
                        for (int i = 0; i < listRep.Count; i++)
                        {
                            int          studentAutoID = listRep[i].StudentClassId;
                            User         student       = uow.Users.Get(x => x.AutoID == studentAutoID).FirstOrDefault();
                            StudentClass studentClass  = uow.StudentClasses.Get(a => a.StudentID == student.UserID && a.ClassID == id).FirstOrDefault();
                            if (studentClass != null)
                            {
                                studentClass.Status = (int)ClassJoinStatus.Processed;
                                uow.StudentClasses.Update(studentClass);
                                StudentCreditLog creditLog = new StudentCreditLog
                                {
                                    ClassID      = id,
                                    UserID       = studentClass.StudentID,
                                    CreationDate = DateTime.Now,
                                    CreditsUsed  = Math.Round(listRep[i].CreditsRefundInt, 2),
                                    LogType      = "Refund"
                                };
                                uow.StudentCreditLogs.Insert(creditLog);
                                StudentCredit credit = uow.StudentCredits.Get(a => a.StudentID == studentClass.StudentID).FirstOrDefault();
                                if (credit != null)
                                {
                                    credit.LastUpdates  = DateTime.Now;
                                    credit.TotalCredits = credit.TotalCredits + listRep[i].CreditsRefundInt;
                                    credit.UsedCredits  = credit.UsedCredits - listRep[i].CreditsRefundInt;
                                    uow.StudentCredits.Update(credit);
                                }
                                UpdateTutorWallet(classModel.TeacherID, classModel.ClassID, teacherClassTime);
                                //payment refund notification
                                Common.AddNotification("Your wallet has beend refunded with " + creditLog.CreditsUsed, "",
                                                       Session["UserId"].ToString(), studentClass.StudentID, "/student/wallet", (int)NotificationType.Refund);
                            }
                        }
                    }
                    uow.Save();
                }
            }
            return(RedirectToAction("classes", "tutor"));
        }