public bool Save(AbsentFromSchool absent, string modifiedby, ref bool dbError)
        {
            try
            {
                using (var connection = GetConnection())
                {
                    var update = @"
                                INSERT INTO AbsentFromSchool
                                   (AbsentFromSchoolID ,
                                    StudentTermRegisterID
                                   ,DayAbsent
                                   ,Reason  ,
                                    DateCreated , LastModifiedBy
                                    )
                             VALUES
                                   (  @AbsentFromSchoolID ,
                                    @StudentTermRegisterID , 
                                    @DayAbsent  
                                   ,@Reason  
                                    ,@DateCreated , @modifiedby
                                  ) 
                                ";
                    var id     = connection.Execute(update,
                                                    new
                    {
                        AbsentFromSchoolID    = Guid.NewGuid(),
                        StudentTermRegisterID = absent.StudentTermRegisterID,
                        DayAbsent             = absent.DayAbsent,
                        Reason      = absent.Reason,
                        DateCreated = DateTime.Now,
                        modifiedby  = modifiedby
                    });

                    return(true);
                }
            }
            catch (Exception er)
            {
                dbError = true;
                DbLog.Error(er);
                return(false);
            }
        }
        public bool Save(Guid studentTermRegisterID, DateTime dayAbsent, string reason, ref StringBuilder sbError)
        {
            bool dbFlag     = false;
            var  enrollment = _uofRepository.StudentTermRegisterRepository.GetByEnrollemtID(studentTermRegisterID, ref dbFlag);

            if (enrollment == null)
            {
                sbError.Append("Is not registered for this term ");
                return(false);
            }


            var student = _uofRepository.StudentRepository.GetStudentById(enrollment.StudentID, ref dbFlag);

            if (student == null)
            {
                sbError.Append("Reg number does not  exist for school");
                return(false);
            }

            Domain.AbsentFromSchool absent = new AbsentFromSchool()
            {
                DateCreated           = DateTime.Now,
                Reason                = reason,
                StudentTermRegisterID = (Guid)enrollment.StudentTermRegisterID,
                DayAbsent             = dayAbsent
            };

            if (absent.DayAbsent > DateTime.Today)
            {
                sbError.Append("Date should be less than today");
            }

            var schoolSetting = _uofRepository.SettingRepository.GetSettingBySchoolID(_user.SchoolID, ref dbFlag);
            var school        = _uofRepository.SchoolRepository.GetSchoolBySchoolID(_user.SchoolID, ref dbFlag);

            if (schoolSetting == null || school == null)
            {
                sbError.Append("Error failed getting school setting");
                return(false);
            }


            var term = _uofRepository.TermRepository.GetByID(schoolSetting.TermID, ref dbFlag);

            if (term == null)
            {
                sbError.Append("Term not found");
            }
            else
            {
                if (absent.DayAbsent < term.StartDate || absent.DayAbsent > term.EndDate)
                {
                    sbError.Append("Absent date should be within term dates");
                }
            }

            if (!string.IsNullOrEmpty(sbError.ToString()))
            {
                return(false);
            }

            var isSaved = _uofRepository.AbsentFromSchoolRepository.Save(absent, _user.Username, ref dbFlag);

            if (!isSaved)
            {
                sbError.Append("error saving absent");
                return(false);
            }
            else
            {
                if (schoolSetting.AbsentFromSchoolEmailNotify)
                {
                    var gender  = student.IsMale ? "He " : " She";
                    var message = $"Hi  <br/> This is a notification for student name {student.StudentName }  {student.StudentSurname } ." +
                                  $"<br>{gender} was recorded absent on the  : {absent.DayAbsent.ToString("dd MMMM yyyy")} for reason [<i> {reason} </i>] .<br><center> <b> School Name :</b>{school.SchoolName}</center?";
                    if (!string.IsNullOrEmpty(student?.Email))
                    {
                        var sendEmail = iGrade.Core.TeacherUserService.Common.Email.SendEmail(student.Email, "  Absent Student ", message, ref sbError);
                    }
                }
            }

            /*
             * var smsEmail = _uofRepository.EmailSmsRepository.GetEmailSmsByID(_user.SchoolID, ref dbFlag);
             *
             * if(smsEmail != null)
             * {
             *   if (schoolSetting.AbsentFromSchoolSmsNotify)
             *   {
             *       // send sms
             *   }
             *
             *   if (schoolSetting.AbsentFromSchoolEmailNotify)
             *   {
             *       string myLink = System.Configuration.ConfigurationManager.AppSettings["AppBaseUrl"].ToString();
             *       var message = $"Hi  <br/> This is a notification for student name {student.StudentName }  {student.StudentSurname } ." +
             *           $"<br> was recorded absent on the  : {absent.DayAbsent.ToString("dd MMMM yyyy")} for school name : <b>{school.SchoolName}</b>";
             *       if (!string.IsNullOrEmpty(student?.Email))
             *       {
             *           var sendEmail = iGrade.Core.TeacherUserService.Common.Email.SendEmail(student.Email, "  Absent Student ", message, ref sbError);
             *       }
             *
             *   }
             * }
             */
            return(true);
        }