示例#1
0
        /// <summary>
        /// Метод возвращает ситуацию, когда дата больше чем выбранный учебный год
        /// </summary>
        /// <param name="educationYear">Учебный год</param>
        /// <param name="dateCheck">Проверяемая дата</param>
        /// <returns></returns>
        private static bool DateAfterEducationYear(EducationYear educationYear, DateTime?dateCheck)
        {
            if (dateCheck != null)
            {
                return(dateCheck > educationYear.DateEnd);
            }

            return(true);
        }
示例#2
0
        /// <summary>
        /// Метод проверяет вхождение даты в диапазон выбранного учебного года
        /// </summary>
        /// /// <param name="educationYear">Учебный год</param>
        /// <param name="dateCheck">Проверяемая дата</param>
        /// <returns></returns>
        private static bool DateInEducationYear(EducationYear educationYear, DateTime?dateCheck)
        {
            if (dateCheck != null)
            {
                return(educationYear.DateStart <= dateCheck && dateCheck <= educationYear.DateEnd);
            }

            return(true);
        }
 public ActionResult Delete(int id, EducationYear educationYear)
 {
     try
     {
         educationYearService.Remove(id);
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
 public ActionResult Edit(int id, EducationYear educationYear)
 {
     try
     {
         educationYearService.Update(educationYear);
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
 public ActionResult Create(EducationYear educationYear)
 {
     try
     {
         educationYearService.Add(educationYear);
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
示例#6
0
        /// <summary>
        /// Метод проверяет вхождение диапазона проверяемых дат в выбранный учебный год
        /// включая ситуации, когда дата окончания диапазона пустая
        /// </summary>
        /// <param name="educationYear">Учебный год</param>
        /// <param name="dateStart">Дата начала проверяемого диапазона</param>
        /// <param name="dateEnd">Дата окончания проверяемого диапазона</param>
        /// <returns></returns>
        public static bool DatesIsActual(EducationYear educationYear, DateTime dateStart, DateTime?dateEnd)
        {
            var actual1 = DateBeforeEducationYear(educationYear, dateStart) || DateInEducationYear(educationYear, dateStart);

            if (dateEnd.HasValue)
            {
                var actual2 = DateInEducationYear(educationYear, dateEnd) || DateAfterEducationYear(educationYear, dateEnd);

                return(actual1 && actual2);
            }

            return(actual1);
        }
示例#7
0
        /// <summary>
        /// Преподаватели, работающие в определенном учебном году
        /// </summary>
        public List <TeacherQueryResult> ActualTeachers(EducationYear educationYear, int?chairId, string query = "")
        {
            var parameters = new object[]
            {
                new SqlParameter("@chairId", chairId ?? 0),
                new SqlParameter("@query", query),
                new SqlParameter("@startDate", educationYear.DateStart),
                new SqlParameter("@endDate", educationYear.DateEnd)
            };

            var sql      = @"
                SELECT t0.PersonId, t0.JobId, t0.FullName
                FROM (
                  SELECT p.PersonId, j.JobId, p.LastName + COALESCE(' ' + p.FirstName, '') + COALESCE(' ' + p.MiddleName, '') AS FullName,
                    ROW_NUMBER() OVER(PARTITION BY e.PersonId ORDER BY j.JobDateStart DESC) as Rn 
                  FROM Job j 
                  LEFT JOIN Employee e ON j.EmployeeId = e.EmployeeId
                  LEFT JOIN Person p ON e.PersonId = p.PersonId
                  WHERE j.ChairId = CASE WHEN @chairId = 0 THEN j.ChairId ELSE @chairId END 
                    AND (j.IsDeleted = 0 OR j.IsDeleted IS NULL)
                    AND (e.IsDeleted = 0 OR e.IsDeleted IS NULL)
                    AND (p.IsDeleted = 0 OR p.IsDeleted IS NULL)

                    -- Проверка что преподаватель работал в определенном учебном году
                    AND (
                      (j.JobDateEnd IS NULL AND (j.JobDateStart < @startDate OR (j.JobDateStart >= @startDate AND j.JobDateStart <= @endDate))) 
                      OR 
                      (j.JobDateEnd IS NOT NULL AND (j.JobDateStart < @startDate OR (j.JobDateStart >= @startDate AND j.JobDateStart <= @endDate))
                        AND (j.JobDateEnd IS NOT NULL AND ((j.JobDateEnd >= @startDate AND j.JobDateEnd <= @endDate) OR j.JobDateEnd > @endDate)))
                    )
                ) AS t0
                WHERE t0.Rn = 1
                  AND t0.FullName LIKE (CASE WHEN @query = '' THEN t0.FullName ELSE @query + '%' END)
                ORDER BY t0.FullName";
            var teachers = _context.Database.SqlQuery <TeacherQueryResult>(sql, parameters).ToList();

            return(teachers);
        }
示例#8
0
        public void AddEducationSteps()
        {
            GlobalDefinitions.ExcelLib.PopulateInCollection(Base.ExcelPath, "Educations");
            EducationSection.Click();
            EduAddNewEduBtn.Click();
            EducationCollege.SendKeys(GlobalDefinitions.ExcelLib.ReadData(2, "College/University"));
            Thread.Sleep(10000);
            EducationCountry.Click();
            SelectElement country = new SelectElement(EducationCountry);

            country.SelectByText(GlobalDefinitions.ExcelLib.ReadData(2, "Country of College/University"));
            EducationTitle.Click();
            SelectElement title = new SelectElement(EducationTitle);

            title.SelectByText(GlobalDefinitions.ExcelLib.ReadData(2, "Title"));
            EducationDegree.SendKeys(GlobalDefinitions.ExcelLib.ReadData(2, "Degree"));
            EducationYear.Click();
            SelectElement year = new SelectElement(EducationYear);

            year.SelectByText(GlobalDefinitions.ExcelLib.ReadData(2, "Year of graduation"));
            AddEduBtn.Click();
            GlobalDefinitions.WaitForElement(GlobalDefinitions.driver, By.XPath("//div[contains(@class,'ns-box ns-growl ns-effect-jelly ns-type-success ns-show')]"), 10);
        }
示例#9
0
        /// <summary>
        /// Преподаватели, работающие в определенном учебном году
        /// со списком групп, у которых они ведут занятия на определённой паре
        /// Используется при редактировании занятия (выдача подсказки о занятости преподавателя)
        /// </summary>
        public List <TeacherQueryResult> ActualTeachersWithEmployment(EducationYear educationYear, int?chairId,
                                                                      int weekNumber, int dayNumber, int classNumber, int currentGroupId)
        {
            var parameters = new object[]
            {
                new SqlParameter("@chairId", chairId),
                new SqlParameter("@startDate", educationYear.DateStart),
                new SqlParameter("@endDate", educationYear.DateEnd),
                new SqlParameter("@weekNumber", weekNumber),
                new SqlParameter("@dayNumber", dayNumber),
                new SqlParameter("@classNumber", classNumber),
                new SqlParameter("@groupId", currentGroupId)
            };

            var query    = @"
                DECLARE @teachers TABLE(
                  JobId INT NOT NULL,
                  PersonId INT NOT NULL,
                  FullName VARCHAR(MAX)
                )

                -- Список актуальных на учебный год преподавателей
                INSERT INTO @teachers (JobId, PersonId, FullName)
                SELECT t0.JobId, t0.PersonId, t0.LastName + COALESCE(' ' + t0.FirstName, '') + COALESCE(' ' + t0.MiddleName, '') AS [Value]
                FROM (
                  SELECT j.JobId, p.PersonId, p.LastName, p.FirstName, p.MiddleName,
                    ROW_NUMBER() OVER(PARTITION BY e.PersonId ORDER BY j.JobDateStart DESC) as Rn 
                  FROM Job j 
                  LEFT JOIN Employee e ON j.EmployeeId = e.EmployeeId
                  LEFT JOIN Person p ON e.PersonId = p.PersonId
                  WHERE j.ChairId = @chairId 
                    AND (j.IsDeleted = 0 OR j.IsDeleted IS NULL)
                    AND (e.IsDeleted = 0 OR e.IsDeleted IS NULL)
                    AND (p.IsDeleted = 0 OR p.IsDeleted IS NULL)

                    -- Проверка что преподаватель работал в определенном учебном году
                    AND (
                      (j.JobDateEnd IS NULL AND (j.JobDateStart < @startDate OR (j.JobDateStart >= @startDate AND j.JobDateStart <= @endDate))) 
                      OR 
                      (j.JobDateEnd IS NOT NULL AND (j.JobDateStart < @startDate OR (j.JobDateStart >= @startDate AND j.JobDateStart <= @endDate))
                        AND (j.JobDateEnd IS NOT NULL AND ((j.JobDateEnd >= @startDate AND j.JobDateEnd <= @endDate) OR j.JobDateEnd > @endDate)))
                    )
                ) AS t0
                WHERE t0.Rn = 1;

                -- Занятия, которые ведут эти преподаватели в определенный день на определённой паре
                DECLARE @teachersLessons TABLE(
                  JobId INT NOT NULL,
                  PersonId INT NOT NULL,
                  GroupName VARCHAR(MAX)
                )
                INSERT INTO @teachersLessons (JobId, PersonId, GroupName)
                SELECT j2.JobId, p2.PersonId, g.DivisionName AS GroupName
                FROM Lesson ls
                LEFT JOIN Job j2 ON ls.JobId = j2.JobId
                LEFT JOIN Employee e2 ON j2.EmployeeId = e2.EmployeeId
                LEFT JOIN Person p2 ON e2.PersonId = p2.PersonId
                LEFT JOIN dict.[Group] g ON ls.GroupId = g.GroupId
                INNER JOIN @teachers AS t2 ON p2.PersonId = t2.PersonId
                WHERE ls.DeletedAt IS NULL
                  AND ls.WeekNumber = @weekNumber AND ls.DayNumber = @dayNumber
                  AND ls.ClassNumber = @classNumber
                  AND ls.GroupId <> @groupId;

                SELECT tch.JobId, tch.FullName, tls.Employment
                FROM (
                  SELECT les.PersonId, COUNT(*) AS [Count]
                      ,STUFF((
                          SELECT ',' + les2.GroupName
                          from @teachersLessons les2
                          where les2.PersonId = les.PersonId
                          FOR XML PATH(''), TYPE
                      ).value('.', 'varchar(max)'), 1, 1, '') AS Employment
                  FROM @teachersLessons les
                  GROUP BY les.PersonId
                ) AS tls
                RIGHT JOIN @teachers tch ON tch.PersonId = tls.PersonId
                ORDER BY tch.FullName;";
            var teachers = _context.Database.SqlQuery <TeacherQueryResult>(query, parameters).ToList();

            return(teachers);
        }
示例#10
0
 /// <summary>
 /// Метод проверяет ситуацию, когда проверяемая дата меньше чем начало учебного года
 /// </summary>
 /// /// <param name="educationYear">Учебный год</param>
 /// <param name="dateCheck">Проверяемая дата</param>
 /// <returns></returns>
 private static bool DateBeforeEducationYear(EducationYear educationYear, DateTime dateCheck)
 {
     return(dateCheck < educationYear.DateStart);
 }