/// <summary>
        /// Add new student into the student collection
        /// </summary>
        /// <param name="model">Loaded student class</param>
        /// <returns>Whether the method is successful</returns>
        public bool Create(Student model)
        {
            //            bool studentExist = CheckIfStudentExist(model);
            //
            //            if (studentExist) return false;

            try
            {
                _studentRepository.Add(model);

                // Add fee
                UpdateStudentFees(model);

                // Update Student count
                IncreaseStudentCount();

                _auditTrailRepository.Log($"Created Student {model.FirstName} {model.LastName}", AuditActionEnum.Created);

                _log.Info("Student Added");

                return true;
            }
            catch (Exception ex)
            {
                _log.Error("Error", ex);
                return false;
            }
        }
Exemple #2
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            var response = MessageBox.Show(@"You made some changes, Do you want to save the changes for this student?",
                @"Update Student", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button2);

            if (response == DialogResult.Yes)
            {
                var student = new Student
                {
                    MiddleName = tboMiddleName.Text,
                    LastName = tboLastName.Text,
                    FirstName = tboFirstName.Text,
                    BirthDate = DateTime.Parse(dtpBirthDate.Text),
                    StartDate = DateTime.Parse(dtpDateStarted.Text),
                    PresentArm = (ArmEnum) cboPresentArm.SelectedValue,
                    Id = _row.Cells["Id"].Value.ToString()

                };

                var success = _studentRepository.Edit(student);
                if (success)
                {
                    MessageBox.Show(@"Student has been updated");
                }
            }
        }
        public ReceiptGenerator(ReceiptModel receiptModel)
        {
            _student = receiptModel.Student;
            _classTermFee = receiptModel.ClassTermFee;
            _school = receiptModel.School;
            _feePayment = _student.FeePayments.FirstOrDefault(x => x.ClassArmTermFeeId == _classTermFee.Id);

        }
        private List<FeeHistoryModel> GetDataSource()
        {
            List<FeePayment> feePayments = _row.Cells["FeePayments"].Value as List<FeePayment>;

            List<FeeHistoryModel> feeHistoryModels = new List<FeeHistoryModel>();

            if (feePayments != null)
            {
                var indexes = Enumerable.Range(1, feePayments.Count).ToList();

                var student = new Student()
                {
                    FirstName = _row.Cells["FirstName"].Value.ToString(),
                    LastName = _row.Cells["LastName"].Value.ToString(),
                    MiddleName = _row.Cells["MiddleName"].Value.ToString()
                };

                for (int i = 0; i < feePayments.Count; i++)
                {
                    ClassTermFee classTermFee = GetClassTermFeeById(feePayments[i].ClassArmTermFeeId);

                    feeHistoryModels.Add(new FeeHistoryModel()
                    {
                        Index = indexes[i],
                        Session = classTermFee.Session,
                        Term = Enum.GetName(typeof (TermEnum), classTermFee.TermEnum),
                        PaidFee = feePayments[i].Amount.ToString(),
                        OutstandingFee = _row.Cells["OutstandingFee"].Value.ToString(),
                        DatePaid = feePayments[i].PaidDate,
                        FilePath = Utilities.GetFilePath(student, classTermFee)
                    });

                }
                return feeHistoryModels;
            }
            return new List<FeeHistoryModel>();
        }
 private bool CheckIfStudentExist(Student student)
 {
     return
         _studentRepository.Any(x => string.Equals(x.FirstName.Trim(), student.FirstName.Trim(),
                     StringComparison.CurrentCultureIgnoreCase) &&
                 string.Equals(x.LastName.Trim(), student.LastName.Trim(),
                     StringComparison.CurrentCultureIgnoreCase) &&
                 string.Equals(x.MiddleName.Trim(), student.MiddleName.Trim(),
                     StringComparison.CurrentCultureIgnoreCase));
 }
        /// <summary>
        /// Update the fees of a given student, only for when adding a new student 
        /// (not necessary new to the school) to the system
        /// </summary>
        /// <param name="student">The student whose fees is to be updated</param>
        /// <returns>true if success else false</returns>
        public bool UpdateStudentFees(Student student)
        {
            try
            {
                var currentFees = _classTermFeeRepository.GetCurrentFees() ?? new List<ClassTermFee>();

                var presentClass = student.PresentClass;

                var isNewIntake = presentClass == student.StartClass && student.PresentTerm == student.StartTerm;

                if (isNewIntake)
                {
                    switch (presentClass)
                    {
                        case ClassEnum.JSS1:
                        case ClassEnum.JSS2:
                        case ClassEnum.JSS3:
                            student.OutstandingFee += currentFees.FirstOrDefault(x => x.ClassEnum == ClassEnum.JSS).Fee;

                            _studentRepository.Update(student);

                            break;

                        case ClassEnum.SSS1:
                        case ClassEnum.SSS2:
                        case ClassEnum.SSS3:
                            student.OutstandingFee += currentFees.FirstOrDefault(x => x.ClassEnum == ClassEnum.SSS).Fee;

                            _studentRepository.Update(student);

                            break;
                    }
                    return true;
                }

                var classTermFee = currentFees.FirstOrDefault(x => x.ClassEnum == presentClass);

                // Not new student
                student.OutstandingFee += classTermFee.Fee;

                _studentRepository.Update(student);

                return true;

            }
            catch (Exception ex)
            {
                _log.Error("Error", ex);
                return false;
            }
        }
        /// <summary>
        /// Updates the student
        /// </summary>
        /// <param name="student">Instance of the given student</param>
        /// <returns>true if success else false</returns>
        public bool Update(Student student)
        {
            try
            {
                _studentRepository.Update(student);

                _auditTrailRepository.Log($"Updated Student {student.FirstName} {student.LastName}", AuditActionEnum.Updated);

                _log.Info("Student Edited");

                return true;
            }
            catch (Exception ex)
            {
                _log.Error("Error", ex);
                return false;
            }
        }
        /// <summary>
        /// Edit the student info from the dgv
        /// </summary>
        /// <param name="model">Instance of student class</param>
        /// <returns>True if success, else false</returns>
        public bool Edit(Student model)
        {
            try
            {
                Student studentFromDb = _studentRepository.GetById(model.Id);

                // var kdlfd = studentFromDb;

                // Update items
                studentFromDb.MiddleName = model.MiddleName;
                studentFromDb.FirstName = model.FirstName;
                studentFromDb.LastName = model.LastName;
                studentFromDb.BirthDate = model.BirthDate;
                studentFromDb.StartDate = model.StartDate;
                studentFromDb.PresentArm = model.PresentArm;

                _studentRepository.Update(studentFromDb);

                _auditTrailRepository.Log($"Student {model.FirstName} {model.LastName}", AuditActionEnum.Updated);

                _log.Info("Student Edited");

                return true;

            }
            catch (Exception ex)
            {
                _log.Error("Error", ex);
                return false;
            }
        }
        public static string GetFilePath(Student student, ClassTermFee classTermFee)
        {
            var schoolDirectory = GetSchoolDirectory();

            //check if school folder exist, create if false. Document\SchoolReceipt.
            if (!Directory.Exists(schoolDirectory))
            {
                Directory.CreateDirectory(schoolDirectory);
            }

            //Check if student folder exist, create if false. Format -> FirstName.LastName.MiddleName
            var studentFolder = $"{student.FirstName}.{student.LastName}.{student.MiddleName}";
            var studentDirectory = Path.Combine(schoolDirectory, studentFolder);

            if (!Directory.Exists(studentDirectory))
            {
                Directory.CreateDirectory(studentDirectory);
            }

            //Set file name in format -> fullname.Session.term
            var currentTerm =
                $"{studentFolder}.{classTermFee.Session.Replace(@"/", "-")}.{Enum.GetName(typeof(TermEnum), classTermFee.TermEnum)}.pdf";

            //append all path to string and return
            var currentTermFileName = Path.Combine(studentDirectory, currentTerm);

            return currentTermFileName;

        }
Exemple #10
0
        private void btnAddStudent_Click(object sender, EventArgs e)
        {
            // AS - Add Student

            var lastName = tboLastNameAS.Text;
            var firstName = tboFirstNameAS.Text;
            var middleName = tboMiddleNameAS.Text;
            var startDate = dtpStartDateAS.Text;
            var birthDate = dtpBirthDateAS.Text;
            var outstandingFee = tboOutstandingFeeAS.Text.Replace(",","");
            var startClass = cboStartClassAS.SelectedValue;
            var startTerm = cboStartTermAS.SelectedValue;
            var presentClass = cboPresentClassAS.SelectedValue;
            var presentTerm = cboPresentTermAS.SelectedValue;
            var presentArm = cboPresentArmAS.SelectedValue;

            if (!string.IsNullOrWhiteSpace(lastName) && !string.IsNullOrWhiteSpace(firstName) /*&&
                !string.IsNullOrWhiteSpace(middleName)*/ /*&& (int) startClass != -1*/
                /*&& (int) startTerm != -1*/ && (int) presentClass != -1 && (int) presentTerm != -1
                /*&& (int) presentArm != -1*/)
            {
                var student = new Student
                {
                    LastName = lastName,
                    FirstName = firstName,
                    MiddleName = middleName,
                    Active = true,
                    BirthDate = DateTime.Parse(birthDate),
//                    StartClass = (ClassEnum) startClass ,
//                    StartTerm = (TermEnum) startTerm,
                    StartDate = DateTime.Parse(startDate),
                    OutstandingFee = Convert.ToDecimal(outstandingFee == "" ? "0" : outstandingFee),
                    PresentClass = (ClassEnum) presentClass,
                    PresentTerm = (TermEnum) presentTerm,
                };

                // If start term combo box is not selected

                if ((int)startTerm == -1)
                {
                    student.StartTerm = TermEnum.First;
                }
                else
                {
                    student.StartTerm = (TermEnum)startTerm;
                }

                // If start class combo box is not selected, assume JSS1

                if ((int)startClass == -1)
                {
                    student.StartClass = ClassEnum.JSS1;
                }
                else
                {
                    student.StartClass = (ClassEnum)startClass;
                }

                // If Present arm combo box is not selected, assume 'A'

                if ((int)presentArm == -1)
                {
                    student.PresentArm = ArmEnum.A;
                }
                else
                {
                    student.PresentArm = (ArmEnum) presentArm;
                }

                var success = _studentRepository.Create(student);

                if (success)
                {
                    MessageBox.Show($"Student \"{firstName} {lastName}\" has been registered", @"School Accountant");
                    ClearTextBoxesAS();
                    RefreshDgvMS();
                    tboLastNameAS.Focus();
                }
                else
                {
                    MessageBox.Show(@"Something went wrong, please restart the program and try again", @"School Accountant");
                }
            }

            else
            {
                MessageBox.Show(@"Please, all information are required", @"School Accountant");
            }
        }