// GET: Classes/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Class @class = db.Classes.Find(id);

            if (@class == null)
            {
                return(HttpNotFound());
            }

            EnrolmentViewModel evm      = new EnrolmentViewModel();
            List <Student>     students = new List <Student>();
            List <Staff>       staff    = new List <Staff>();
            var classID = Convert.ToInt32(id);

            evm.Class = db.Classes.Find(classID);
            foreach (var enrolment in db.Enrolments.Where(e => e.Class_ID.Equals(classID)))
            {
                students.Add(enrolment.Student);
            }
            foreach (var classStaff in db.ClassStaffs.Where(cs => cs.Class_ID.Equals(classID)))
            {
                staff.Add(classStaff.Staff);
            }
            evm.Students = students;
            evm.Staff    = staff;

            return(View(evm));
        }
        public ActionResult Save(Enrolment enrolment)
        {
            if (!ModelState.IsValid)
            {
                var newEnrol = new EnrolmentViewModel
                {
                    Enrolment = enrolment,
                    Students  = _context.Students.ToList(),
                    Courses   = _context.Courses.ToList(),
                    Plans     = _context.Plans.ToList(),
                };
                return(View("Form", newEnrol));
            }

            var enrolmentInDb = _context.Enrolments.SingleOrDefault(c => c.StudentID == enrolment.StudentID && c.CourseID == enrolment.CourseID);

            if (enrolmentInDb == null)
            {
                _context.Enrolments.Add(enrolment);
            }
            else
            {
                enrolmentInDb.StudentID  = enrolment.StudentID;
                enrolmentInDb.CourseID   = enrolment.CourseID;
                enrolmentInDb.PlanID     = enrolment.PlanID;
                enrolmentInDb.EnrolledAt = enrolment.EnrolledAt == null ? DateTime.Now.Date : enrolment.EnrolledAt;
            }
            _context.SaveChanges();
            return(RedirectToAction("Index", "Enrolments"));
        }
예제 #3
0
        /// <summary>
        /// Enrolls tennant by the requisition functionality
        /// </summary>
        /// <param name="unitOfWork"></param>
        /// <param name="model"></param>
        private void EnrollTennantByRequisition(UnitOfWork unitOfWork, EnrolmentViewModel model)
        {
            var requisition = unitOfWork.PropertyRequisition.Get(model.ReqID);

            bool isAccepted = requisition.IsAccepted.HasValue ? requisition.IsAccepted.Value : false;

            if (isAccepted)
            {
                string enrolKey = unitOfWork.Property.GetEnrolmentKeyByPropID(model.PropertyID);

                if (enrolKey.Equals(model.EnrolmentKey))
                {
                    PropertyHelper.createRolesIfNotExist();

                    var user     = requisition.User;
                    var property = requisition.Property;
                    //assigning user as tennant if he/she isn't
                    var  userTypes     = unitOfWork.UserTypeAssoc.GetUserTypesByUserID(user.ID);
                    bool isUserTennant = PropertyHelper.isUserOfType(userTypes, EFPConstants.UserType.Tennant);

                    if (!isUserTennant)
                    {
                        PropertyHelper.associateUserWithUserType(unitOfWork, user.ID, EFPConstants.UserType.Tennant);
                    }

                    Tennant tennant = new Tennant()
                    {
                        ID                  = Guid.NewGuid(),
                        UserID              = user.ID,
                        PropertyID          = model.PropertyID,
                        RentAmt             = property.Price,
                        SettlementPeriod    = model.SettlementPeriod,
                        InstitutionName     = model.InstitutionName,
                        ProgrammeName       = model.ProgrammeName,
                        ProgrammeStartDate  = DateTime.ParseExact(model.ProgrammeStartDate, "MM/dd/yyyy", CultureInfo.InvariantCulture),
                        ProgrammeEndDate    = DateTime.ParseExact(model.ProgrammeEndDate, "MM/dd/yyyy", CultureInfo.InvariantCulture),
                        PhotoUrl            = null,
                        ReferencedLetterURL = null,
                        DateTCreated        = DateTime.Now
                    };

                    user.DOB = DateTime.ParseExact(model.DOB, "MM/dd/yyyy", CultureInfo.InvariantCulture);

                    unitOfWork.Tennant.Add(tennant);
                }
                else
                {
                    throw new Exception("Enrolment key does not match the property being requested");
                }
            }
            else
            {
                throw new Exception("Requistion was not accepted by the property owner");
            }
        }
예제 #4
0
        public JsonResult Enroll(EnrolmentViewModel model)
        {
            ErrorModel errorModel = new ErrorModel();

            if (ModelState.IsValid)
            {
                using (EasyFindPropertiesEntities dbCtx = new EasyFindPropertiesEntities())
                {
                    using (var dbCtxTran = dbCtx.Database.BeginTransaction())
                    {
                        try
                        {
                            if (!model.Password.Equals(model.ConfirmPassword))
                            {
                                throw new Exception("The fields Password and Confirm Password are not equal");
                            }

                            var unitOfWork = new UnitOfWork(dbCtx);

                            if (model.ReqID != new Guid())
                            {
                                EnrollTennantByRequisition(unitOfWork, model);
                            }
                            else
                            {
                                EnrollNewTennant(unitOfWork, model);
                            }

                            unitOfWork.save();
                            dbCtxTran.Commit();
                        }
                        catch (Exception ex)
                        {
                            dbCtxTran.UnderlyingTransaction.Rollback();

                            errorModel.hasErrors     = true;
                            errorModel.ErrorMessages = new List <string>();
                            errorModel.ErrorMessages.Add(ex.Message);
                        }
                    }
                }
            }
            else
            {
                var errors = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage);

                errorModel.hasErrors     = true;
                errorModel.ErrorMessages = new List <string>();
                errorModel.ErrorMessages.AddRange(errors);
            }

            return(Json(errorModel));
        }
예제 #5
0
        public ActionResult Edit(long id)
        {
            var enrol = repository.GetRegistration(id);

            if (enrol == null)
            {
                return(Json("Unable to find entry".ToJsonFail()));
            }

            var viewmodel = new EnrolmentViewModel(baseviewmodel);

            viewmodel.enrolment = enrol.ToModel();

            return(View(viewmodel));
        }
        public ActionResult New()
        {
            var students = _context.Students.ToList();
            var courses  = _context.Courses.ToList();
            var plans    = _context.Plans.ToList();
            var newEnrol = new EnrolmentViewModel
            {
                Enrolment = new Enrolment(),
                Students  = students,
                Courses   = courses,
                Plans     = plans
            };

            return(View("Form", newEnrol));
        }
        public ActionResult Edit(int sid, int cid)
        {
            var enrolment = _context.Enrolments.SingleOrDefault(s => s.StudentID == sid && s.CourseID == cid);

            if (enrolment == null)
            {
                return(HttpNotFound());
            }
            var newEnrol = new EnrolmentViewModel
            {
                Enrolment = enrolment,
                Students  = _context.Students.ToList(),
                Courses   = _context.Courses.ToList(),
                Plans     = _context.Plans.ToList()
            };

            return(View("Form", newEnrol));
        }
예제 #8
0
        /// <summary>
        /// Enrolls a new user tennant and account for the user
        /// </summary>
        /// <param name="unitOfWork"></param>
        /// <param name="model"></param>
        private void EnrollNewTennant(UnitOfWork unitOfWork, EnrolmentViewModel model)
        {
            string enrolKey = unitOfWork.Property.GetEnrolmentKeyByPropID(model.PropertyID);

            if (enrolKey.Equals(model.EnrolmentKey))
            {
                var user = PropertyHelper.createUser(unitOfWork, EFPConstants.UserType.Tennant, "", model.Email, model.FirstName,
                                                     model.LastName, model.CellNum, DateTime.Parse(model.DOB));

                PropertyHelper.createUserAccount(unitOfWork, EFPConstants.UserType.Tennant, model.Password);

                var propertyPrice = unitOfWork.Property.Get(model.PropertyID).Price;

                Tennant tennant = new Tennant()
                {
                    ID                  = Guid.NewGuid(),
                    UserID              = user.ID,
                    PropertyID          = model.PropertyID,
                    RentAmt             = propertyPrice,
                    SettlementPeriod    = model.SettlementPeriod,
                    InstitutionName     = model.InstitutionName,
                    ProgrammeName       = model.ProgrammeName,
                    ProgrammeStartDate  = DateTime.Parse(model.ProgrammeEndDate),
                    ProgrammeEndDate    = DateTime.Parse(model.ProgrammeEndDate),
                    PhotoUrl            = null,
                    ReferencedLetterURL = null,
                    DateTCreated        = DateTime.Now
                };

                unitOfWork.Tennant.Add(tennant);
            }
            else
            {
                throw new Exception("Enrolment key does not match the property being requested");
            }
        }
        // GET: Classes/Create
        public ActionResult Create(string staffSearch, string tutorGroup, string yearGroup, string studentSearch, string className, string warning, string student, string staff)
        {
            EnrolmentViewModel evm = new EnrolmentViewModel();

            evm.Staff         = db.Accounts.OfType <Staff>().ToList();
            evm.Students      = db.Accounts.OfType <Student>().ToList();
            ViewBag.className = className;
            ViewBag.Students  = student;
            ViewBag.Staff     = staff;

            if (!String.IsNullOrEmpty(tutorGroup))
            {
                evm.Students = evm.Students.Where(st => st.Tutor_Group.Equals(tutorGroup)).ToList();
            }
            if (!String.IsNullOrEmpty(yearGroup))
            {
                evm.Students = evm.Students.Where(st => st.Year_Group.Equals(yearGroup)).ToList();
            }
            if (!String.IsNullOrEmpty(studentSearch))
            {
                var search = studentSearch.ToUpper();
                evm.Students = evm.Students.Where(st => st.First_Name.ToUpper().Contains(search) || st.Surname.ToUpper().Contains(search)).ToList();
            }

            if (!String.IsNullOrEmpty(staffSearch))
            {
                var search = staffSearch.ToUpper();
                evm.Staff = db.Accounts.OfType <Staff>().Where(st => st.First_Name.ToUpper().Contains(search) || st.Surname.ToUpper().Contains(search)).ToList();
            }

            if (!String.IsNullOrEmpty(warning))
            {
                ViewBag.Error = warning;
            }
            if (!String.IsNullOrEmpty(staff))
            {
                List <string> staffMembers = staff.Split(',').ToList <string>();
                foreach (var name in staffMembers)
                {
                    var exists = false;
                    var id     = Convert.ToInt32(name);
                    foreach (var listedStaff in evm.Staff)
                    {
                        if (listedStaff.User_ID == id)
                        {
                            exists = true;
                        }
                    }
                    if (exists == false)
                    {
                        evm.Staff.Add(db.Accounts.OfType <Staff>().Where(st => st.User_ID.Equals(id)).FirstOrDefault());
                    }
                }
            }
            if (!String.IsNullOrEmpty(student))
            {
                List <string> studentMembers = student.Split(',').ToList <string>();
                foreach (var name in studentMembers)
                {
                    var exists = false;
                    var id     = Convert.ToInt32(name);
                    foreach (var listedStudent in evm.Students)
                    {
                        if (listedStudent.User_ID == id)
                        {
                            exists = true;
                        }
                    }
                    if (exists == false)
                    {
                        evm.Students.Add(db.Accounts.OfType <Student>().Where(st => st.User_ID.Equals(id)).FirstOrDefault());
                    }
                }
            }

            return(View(evm));
        }
        // GET: Classes/Edit/5
        public ActionResult Edit(int?id, string staffSearch, string tutorGroup, string yearGroup, string studentSearch, string className, string warning, string student, string staff)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Class @class = db.Classes.Find(id);

            if (@class == null)
            {
                return(HttpNotFound());
            }

            EnrolmentViewModel evm = new EnrolmentViewModel();

            evm.Staff    = db.Accounts.OfType <Staff>().ToList();
            evm.Students = db.Accounts.OfType <Student>().ToList();
            var classID = Convert.ToInt32(id);

            evm.Class = db.Classes.Find(classID);

            if (String.IsNullOrEmpty(className))
            {
                student = "";
                staff   = "";
                foreach (var enrolment in db.Enrolments.Where(e => e.Class_ID.Equals(classID)))
                {
                    student = student + enrolment.User_ID + ",";
                }
                foreach (var classStaff in db.ClassStaffs.Where(cs => cs.Class_ID.Equals(classID)))
                {
                    staff = staff + classStaff.User_ID + ",";
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(tutorGroup))
                {
                    evm.Students = evm.Students.Where(st => st.Tutor_Group.Equals(tutorGroup)).ToList();
                }
                if (!String.IsNullOrEmpty(yearGroup))
                {
                    evm.Students = evm.Students.Where(st => st.Year_Group.Equals(yearGroup)).ToList();
                }
                if (!String.IsNullOrEmpty(studentSearch))
                {
                    var search = studentSearch.ToUpper();
                    evm.Students = evm.Students.Where(st => st.First_Name.ToUpper().Contains(search) || st.Surname.ToUpper().Contains(search)).ToList();
                }
                if (!String.IsNullOrEmpty(staffSearch))
                {
                    var search = staffSearch.ToUpper();
                    evm.Staff = db.Accounts.OfType <Staff>().Where(st => st.First_Name.ToUpper().Contains(search) || st.Surname.ToUpper().Contains(search)).ToList();
                }
                if (!String.IsNullOrEmpty(staff))
                {
                    if (staff.EndsWith(","))
                    {
                        staff = staff.Remove(staff.Length - 1);
                    }
                    List <string> staffMembers = staff.Split(',').ToList <string>();
                    foreach (var name in staffMembers)
                    {
                        var exists = false;
                        var sid    = Convert.ToInt32(name);
                        foreach (var listedStaff in evm.Staff)
                        {
                            if (listedStaff.User_ID == sid)
                            {
                                exists = true;
                            }
                        }
                        if (exists == false)
                        {
                            evm.Staff.Add(db.Accounts.OfType <Staff>().Where(st => st.User_ID.Equals(sid)).FirstOrDefault());
                        }
                    }
                }
                if (!String.IsNullOrEmpty(student))
                {
                    if (student.EndsWith(","))
                    {
                        student = student.Remove(student.Length - 1);
                    }
                    List <string> studentMembers = student.Split(',').ToList <string>();
                    foreach (var name in studentMembers)
                    {
                        var exists = false;
                        var sid    = Convert.ToInt32(name);
                        foreach (var listedStudent in evm.Students)
                        {
                            if (listedStudent.User_ID == sid)
                            {
                                exists = true;
                            }
                        }
                        if (exists == false)
                        {
                            evm.Students.Add(db.Accounts.OfType <Student>().Where(st => st.User_ID.Equals(sid)).FirstOrDefault());
                        }
                    }
                }
            }

            ViewBag.Students = student;
            ViewBag.Staff    = staff;
            return(View(evm));
        }