public ActionResult ParticipantDetail(Guid id)
        {
            int pageSize = 0;

            pageSize = pageSize > 0 ? pageSize : 10;


            var repository = new SessionRepository();

            repository.SetOccuredStatus();

            var cu           = Session["user"] as ContextUser;
            var session      = repository.Get().First(x => x.RowGUID == id);
            var participants = session.session_participant.Select(x => x.participant_profile).ToList();
            //Sorting order
            string eveCat           = session.StudentEvaluationCatagory;
            var    forms            = new EvaluationFormRepository().Get().Where(x => x.Catagory == eveCat).ToList();
            var    lkEvaluationForm = forms.FirstOrDefault(x => x.SubCatagory == "pre");

            if (lkEvaluationForm != null)
            {
                ViewBag.preform = lkEvaluationForm.FormPath;
            }
            var evaluationForm = forms.FirstOrDefault(x => x.SubCatagory == "post");

            if (evaluationForm != null)
            {
                ViewBag.postform = evaluationForm.FormPath;
            }
            ViewBag.sessionid   = session.Id;
            ViewBag.sessionname = session.ProgramName;
            ViewBag.schoolname  = session.school.SchoolName;
            return(View(participants));
        }
Example #2
0
        public ActionResult Edit(Guid?id, int page = 1)
        {
            SelectListItem defaultselect = new SelectListItem {
                Text = General.Select, Value = "0"
            };

            var school = new SchoolRepository().Get().Select(x =>
                                                             new SelectListItem {
                Text = x.SchoolName, Value = x.Id + ""
            }).ToList();

            school.Insert(0, defaultselect);
            ViewBag.school = school;

            var volunteer = new VolunteerRepository().GetApprovedVolunteer().Select(x =>
                                                                                    new SelectListItem {
                Text = x.VolunteerName, Value = x.Id + ""
            }).ToList();

            volunteer.Insert(0, defaultselect);
            ViewBag.volunteer = volunteer;

            var certificatesVolunteer = new CertificateRepository().Get().Where(x => x.TypeCertificate == "Volunteer").Select(x =>
                                                                                                                              new SelectListItem {
                Text = x.Name, Value = x.Id + ""
            }).ToList();

            certificatesVolunteer.Insert(0, defaultselect);
            ViewBag.certificatesVolunteer = certificatesVolunteer;

            var certificatesStudent = new CertificateRepository().Get().Where(x => x.TypeCertificate == "Student").Select(x =>
                                                                                                                          new SelectListItem {
                Text = x.Name, Value = x.Id + ""
            }).ToList();

            certificatesStudent.Insert(0, defaultselect);
            ViewBag.certificatesStudent = certificatesStudent;

            var evaluationCatagory = new EvaluationFormRepository().Get().GroupBy(x => x.Catagory).Select(x => x.First()).Select(x =>
                                                                                                                                 new SelectListItem {
                Text = x.Catagory, Value = x.Catagory + ""
            }).ToList();

            evaluationCatagory.Insert(0, defaultselect);
            ViewBag.evaluationCatagory = evaluationCatagory;

            var cu = Session["user"] as ContextUser;

            session sessionModel;

            if (id == null)
            {
                sessionModel                    = new session();
                sessionModel.IsActive           = true;
                sessionModel.PropesedDateString = DateTime.Now.AddMonths(1).ToString("dd/MM/yyyy");
            }
            else
            {
                var sessionRepo = new SessionRepository();
                sessionModel = sessionRepo.GetByRowId(id.Value);
                sessionModel.PropesedDateString = sessionModel.ProposedDateTime.ToString("dd/MM/yyyy");
                sessionModel.EnumSessionStatus  = (SessionStatus)Enum.Parse(typeof(SessionStatus), sessionModel.Status);
                if (sessionModel.ActualDateTime != null)
                {
                    sessionModel.ActualDateString = sessionModel.ActualDateTime.Value.ToString("dd/MM/yyyy");
                    if ((sessionModel.ActualDateTime.Value.Date - DateTime.Now.Date).Hours >= 72 && sessionModel.EnumSessionStatus == SessionStatus.Approved && cu.EnumRole == EnumUserRole.Coordinator)
                    {
                        sessionModel.ChangeDateVisible = true;
                    }
                }
                if (cu.EnumRole == EnumUserRole.Participant)
                {
                    string eve_cat = sessionModel.StudentEvaluationCatagory;
                    if (!string.IsNullOrEmpty(eve_cat))
                    {
                        int participantId = new ParticipiantRepository().GetByUserId(cu.OUser.Id).Id;
                        var sParticipant  = sessionModel.session_participant.Where(x => x.ParticipantID == participantId).First();
                        sessionModel.EvaluationFormFilled  = (sParticipant.IsPreEvaluated ?? false) && (sParticipant.IsPostEvaluated ?? false);
                        sessionModel.IsPreFilledByStudent  = (sParticipant.IsPreEvaluated ?? false);
                        sessionModel.IsPostFilledByStudent = (sParticipant.IsPostEvaluated ?? false);
                        sessionModel.IsAttendenseMarked    = sParticipant.VolunteerMarkedAttendence;
                    }
                }
                if (cu.EnumRole == EnumUserRole.Coordinator)
                {
                    sessionModel.IsFilledCoordinator = new EvaluationVolunteerRepository().GetEvaluationForm(sessionModel.Id) != null;
                }
                if (cu.EnumRole == EnumUserRole.Volunteer)
                {
                    sessionModel.IsFilledVolunteer = new EvaluationCoordinatorRepository().GetEvaluationForm(sessionModel.Id) != null;
                }
                var session_evaluationform_photo = sessionModel.session_evaluationform_photo.Select(x => x.FilePath).ToArray();
                sessionModel.EvaluationImageLink = string.Join(",", session_evaluationform_photo) + ",";
                var session_photo = sessionModel.session_photo.Select(x => x.FilePath).ToArray();
                sessionModel.SessionImageLink = string.Join(",", session_photo) + ",";

                sessionModel.PagedParticipants = sessionModel.session_participant.Select(x => x.participant_profile).OrderByDescending(x => x.CreatedAt).ToPagedList(page, 5);
                ViewBag.Count = sessionModel.session_participant.Count();
                ViewBag.IsSessionEnabledForVolunteer = true;
            }
            return(View(sessionModel));
        }
Example #3
0
        public ActionResult Edit(session session)
        {
            var      sessionRepo   = new SessionRepository();
            session  oSession      = null;
            var      cu            = Session["user"] as ContextUser;
            DateTime?oldActualDate = null;

            if (session.Id == 0)
            {
                oSession           = new session();
                oSession.RowGUID   = Guid.NewGuid();
                oSession.CreatedAt = DateTime.Now;
                oSession.CreatedBy = cu.OUser.Id;
                oSession.Status    = SessionStatus.Pending.ToString();
            }
            else
            {
                oSession           = sessionRepo.Get(session.Id);
                oSession.UpdatedAt = DateTime.Now;
                oldActualDate      = oSession.ActualDateTime;
                // oSession.UpdatedBy = int.Parse(sid);
            }
            var currentStatus = (SessionStatus)Enum.Parse(typeof(SessionStatus), oSession.Status);


            if (cu.EnumRole == EnumUserRole.SuperAdmin && currentStatus == SessionStatus.Pending)
            {
                oSession.ProgramPurpose = "ProgramPurposeNotUsed";
                oSession.TargetGroup    = session.TargetGroup;

                if (oSession.SchoolID == null && session.SchoolID != null && session.SchoolID.Value != 0)
                {
                    var cor                   = new CoordinatorRepository().GetBySchool(session.SchoolID.Value);
                    var user                  = new AccountRepository().Get(oSession.CreatedBy);
                    var bogusController       = Util.CreateController <EmailTemplateController>();
                    EmailTemplateModel emodel =
                        new EmailTemplateModel
                    {
                        Title           = "Notification: Session Created For School",
                        User            = user.FirstName,
                        CoordinatorName = cor.CoordinatorName,
                        SessionTitle    = oSession.ProgramName,
                        UserName        = user.Username,
                        Email           = cor.CoordinatorEmail
                    };
                    string body =
                        Util.RenderViewToString(bogusController.ControllerContext, "SessionCreatedSchool", emodel);
                    EmailSender.SendSupportEmail(body, cor.CoordinatorEmail);
                }
                oSession.SchoolID                  = session.SchoolID == 0 ? null : session.SchoolID;
                oSession.ProgramName               = session.ProgramName;
                oSession.ProposedDateTime          = DateTime.ParseExact(session.PropesedDateString, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                oSession.ProposedEndDateTime       = session.ProposedEndDateTime;
                oSession.VolunteerId               = session.VolunteerId == 0 ? null : session.VolunteerId;
                oSession.StudentCertificate        = session.StudentCertificate == 0 ? null : session.StudentCertificate;
                oSession.VolunteerCertificate      = session.VolunteerCertificate == 0 ? null : session.VolunteerCertificate;
                oSession.StudentEvaluationCatagory = session.StudentEvaluationCatagory;
            }
            if (session.ActualDateString != null)
            {
                oSession.ActualDateTime = DateTime.ParseExact(session.ActualDateString, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            }
            if (currentStatus == SessionStatus.DateChanges)
            {
                if (session.SendKitByMailCourier && !oSession.SendKitByMailCourier)
                {
                    var cor                   = oSession.school.coordinator_profile.First();
                    var user                  = new AccountRepository().Get(oSession.CreatedBy);
                    var bogusController       = Util.CreateController <EmailTemplateController>();
                    EmailTemplateModel emodel =
                        new EmailTemplateModel
                    {
                        Title           = "Injaz: Administrator send kit by mail courier.",
                        User            = user.FirstName,
                        CoordinatorName = cor.CoordinatorName,
                        SessionTitle    = oSession.ProgramName,
                    };
                    string body =
                        Util.RenderViewToString(bogusController.ControllerContext, "SendKitBymailCourier", emodel);
                    EmailSender.SendSupportEmail(body, cor.CoordinatorEmail);
                }
                oSession.SendKitByMailCourier = session.SendKitByMailCourier;
            }
            if (cu.EnumRole == EnumUserRole.Coordinator && (currentStatus == SessionStatus.Approved || currentStatus == SessionStatus.Rejected))
            {
                if (session.ConfirmKitReceivedBySchool && !oSession.ConfirmKitReceivedBySchool)
                {
                    var cor                   = oSession.school.coordinator_profile.First();
                    var user                  = new AccountRepository().Get(oSession.CreatedBy);
                    var bogusController       = Util.CreateController <EmailTemplateController>();
                    EmailTemplateModel emodel =
                        new EmailTemplateModel
                    {
                        Title           = "Injaz: Confirm Kit Received By School.",
                        CoordinatorName = cor.CoordinatorName,
                        SessionTitle    = oSession.ProgramName,
                        User            = cor.user.FirstName
                    };
                    string body =
                        Util.RenderViewToString(bogusController.ControllerContext, "ConfirmKitReceivedBySchool", emodel);
                    EmailSender.SendSupportEmail(body, user.Email);
                }
                oSession.ConfirmKitReceivedBySchool = session.ConfirmKitReceivedBySchool;
            }
            if (currentStatus == SessionStatus.Pending && oSession.ActualDateTime != null)
            {
                if (oSession.ProposedDateTime.Date == oSession.ActualDateTime.Value.Date)
                {
                    if (oSession.Status != SessionStatus.Approved.ToString())
                    {
                        SendEmailNotificationsApprovedByAdmin(oSession);
                    }
                    oSession.Status          = SessionStatus.Approved.ToString();
                    oSession.ApprovedByAdmin = true;
                }
                else
                {
                    if (oSession.Status != SessionStatus.DateChanges.ToString())
                    {
                        SendEmailNotificationDateChanged(oSession);
                    }
                    oSession.Status = SessionStatus.DateChanges.ToString();
                }
            }
            if (currentStatus == SessionStatus.Approved && oldActualDate != null && oSession.ActualDateTime != oldActualDate)
            {
                if (oSession.Status != SessionStatus.Approved.ToString())
                {
                    SendEmailNotificationDateChanged(oSession);
                }
                oSession.Status          = SessionStatus.DateChanges.ToString();
                oSession.ApprovedByAdmin = false;
            }
            if (session.SubmitButton != null)
            {
                if (session.SubmitButton == "approved")
                {
                    if (oSession.Status != SessionStatus.Approved.ToString())
                    {
                        SendEmailNotificationsApprovedByAdmin(oSession);
                    }
                    oSession.Status          = SessionStatus.Approved.ToString();
                    oSession.ApprovedByAdmin = true;
                }
                if (session.SubmitButton == "submitpre")
                {
                    int    participantId = new ParticipiantRepository().GetByUserId(cu.OUser.Id).Id;
                    string eve_cat       = oSession.StudentEvaluationCatagory;
                    string form          = new EvaluationFormRepository().Get().First(x => x.Catagory == eve_cat && x.SubCatagory == "pre").FormPath;
                    return(RedirectToAction(form, "EvaluationForm", new { participantid = participantId, sessionid = oSession.Id }));
                }
                if (session.SubmitButton == "submitpost")
                {
                    int    participantId = new ParticipiantRepository().GetByUserId(cu.OUser.Id).Id;
                    string eve_cat       = oSession.StudentEvaluationCatagory;
                    string form          = new EvaluationFormRepository().Get().First(x => x.Catagory == eve_cat && x.SubCatagory == "post").FormPath;
                    return(RedirectToAction(form, "EvaluationForm", new { participantid = participantId, sessionid = oSession.Id }));
                }
                if (session.SubmitButton == "request")
                {
                    //oSession.MarkedCompletedByVolunteer = true;
                    var volunteer = new VolunteerRepository().GetByGoogleId(cu.GoogleId) ?? new VolunteerRepository().GetByLinkedInId(cu.GoogleId);
                    oSession.VolunteerId = volunteer.Id;

                    var user                  = new AccountRepository().Get(oSession.CreatedBy);
                    var bogusController       = Util.CreateController <EmailTemplateController>();
                    EmailTemplateModel emodel =
                        new EmailTemplateModel
                    {
                        Title         = "Injaz:Volunteer Assign Session",
                        VolunteerName = volunteer.VolunteerName,
                        SessionTitle  = oSession.ProgramName,
                        User          = user.FirstName
                    };
                    string body =
                        Util.RenderViewToString(bogusController.ControllerContext, "VolunteerAssignSession", emodel);
                    EmailSender.SendSupportEmail(body, user.Email);
                }
                if (session.SubmitButton == "confirm")
                {
                    return(RedirectToAction("StudentAttendense", new { sessionId = oSession.RowGUID }));
                }
                if (session.SubmitButton == "reject")
                {
                    oSession.Status = SessionStatus.Rejected.ToString();
                }
                if (session.SubmitButton == "feedback")
                {
                    var participant = new ParticipiantRepository().GetByUserId(cu.OUser.Id);

                    return(RedirectToAction("FeedBack", new { sessionId = oSession.Id, participantId = participant.Id }));
                }
                if (session.SubmitButton == "coordinatorform")
                {
                    int corId = new CoordinatorRepository().GetByUserId(oSession.school.CoordinatorUserId).Id;
                    return(RedirectToAction("CoordinatorForm", "EvaluationForm", new { sessionId = oSession.Id, volId = oSession.volunteer_profile.Id, corId = corId }));
                }
                if (session.SubmitButton == "viewcertificate" || session.SubmitButton == "volunteerviewcertificate")
                {
                    var    participant     = new ParticipiantRepository().GetByUserId(cu.OUser.Id);
                    string certificatePath = null;

                    List <PdfCoordinatesModel> pdfCoordinates = null;
                    if (cu.EnumRole == EnumUserRole.Participant)
                    {
                        certificatePath = Server.MapPath(oSession.certificate.UploadFilePath);
                        pdfCoordinates  = new CertificateDictionary().GetPdfCoordinatesFromDictionary(oSession.certificate.Type);
                    }
                    else
                    {
                        certificatePath = Server.MapPath(oSession.certificate1.UploadFilePath);
                        pdfCoordinates  = new CertificateDictionary().GetPdfCoordinatesFromDictionary(oSession.certificate1.Type);
                        oSession.IsVolunteerCertificateGenerated = true;
                    }
                    foreach (var pc in pdfCoordinates)
                    {
                        switch (pc.CertifiacteData)
                        {
                        case CertificateEnum.NameOfStudent:
                            pc.Text = participant.Name + " " + participant.FatherName + " " + participant.Family;
                            break;

                        case CertificateEnum.NameOfCoordinator:
                            pc.Text = oSession.school.coordinator_profile.First().CoordinatorName;
                            break;

                        case CertificateEnum.ProgrammYear:
                            pc.Text = DateTime.Now.Year + "";
                            break;

                        case CertificateEnum.TranningDate:
                            pc.Text = Util.DateConversion(oSession.ActualDateTime.Value.ToShortDateString(), "Hijri", "en-us");
                            break;

                        case CertificateEnum.TranningHour:
                            pc.Text = ConfigurationManager.AppSettings["TranningHours"];
                            break;

                        case CertificateEnum.NameOfVolunteer:
                            pc.Text = oSession.volunteer_profile.VolunteerName;
                            break;
                        }
                    }
                    string fontFilePath = Server.MapPath("~/fonts/Arabic Fonts/trado.ttf");
                    var    outputFile   = PdfGenerator.GenerateOnflyPdf(certificatePath, pdfCoordinates, fontFilePath);
                    if (session.SubmitButton == "viewcertificate")
                    {
                        EmailSender.SendSupportEmail("Student Template", participant.Email, outputFile);
                        oSession.session_participant.Where(x => x.ParticipantID == participant.Id).First().IsCertificateGenerated = true;
                    }
                    else
                    {
                        EmailSender.SendSupportEmail("Volunteer Template", oSession.volunteer_profile.VolunteerEmail, outputFile);
                    }
                }
            }
            oSession.IsActive = session.IsActive;
            if (session.Id == 0)
            {
                sessionRepo.Post(oSession);
            }
            else
            {
                sessionRepo.Put(oSession.Id, oSession);
            }
            return(RedirectToAction("Index"));
        }