示例#1
0
        public Raspisanie AddPara(ParaViewModel model)
        {
            SpezialRazdeliDisziplini spezialRazdeliDisziplini = _dataProvider.SpezialRazdeliDisziplini.FirstOrDefault(
                x => x.IdDisciplini == model.DisciplineId && x.IdSpezMeta == model.IdSpezMeta);

            DateTime dateOfPara = DateTime.Parse(model.DateOfPara);

            Raspisanie raspisanie = new Raspisanie()
            {
                Data = dateOfPara,
                IdUchPlanaDisciplini = spezialRazdeliDisziplini.IdUpPlanDisciplini,
                IdVidaRaboti = model.TypeOfParaId,
                IdVremyaZanyatia = model.TimeOfParaId,
                Pot = model.PotokId,
                IdSpiskaGrupp = model.GroupId != 0 ? model.GroupId : (int?)null,
                NomerPodGrupp = model.SubgroupId != 0 ? model.SubgroupId : (int?)null,
                IdPrepodaCafedri = model.PrepodiDisziplineId,
                NomerZanyatiaVSemestre = 0,
                Auditoriya = model.Auditory,
                TipNagruzki = 80
            };

            bool isParaExist = CheckForParaIdentity(raspisanie);
            bool isGroupHasNakladki = PrivateCheckForNakladkiForGroup(raspisanie);
            bool isPrepodHasNakladki = PrivateCheckForNakladkiForPrepod(raspisanie);

            if (!isParaExist && !isGroupHasNakladki && !isPrepodHasNakladki)
            {
                _dataProvider.Raspisanie.Add(raspisanie);
                _dataProvider.Save();
            }
            else
            {
                if (model.GroupId != 0)
                {
                    throw new ArgumentException("У группы накладки, измените время/или дату пары");
                }
                else
                {
                    throw new ArgumentException("У потока накладки, измените время/дату пары");
                }
            }

            return raspisanie;
        }
示例#2
0
        public static LessonViewModel ToLessonViewModel(Raspisanie p)
        {
            return new LessonViewModel()
            {
                Id = p.Id,
                //предмет
                Discipline = new DisciplineMetaViewModel()
                {
                    Id = p.SpezialRazdeliDisziplini.Discipline.Id,
                    FullName = p.SpezialRazdeliDisziplini.Discipline.Name,
                    ShortName = p.SpezialRazdeliDisziplini.Discipline.ShortName,
                    TranslitName = TranslitHelper.RusToEng(p.SpezialRazdeliDisziplini.Discipline.ShortName)
                },
                //учебная информация о занятии
                FlowId = p.Pot,
                FlowName = p.PotDictionary.Name,
                GroupId = p.IdSpiskaGrupp,
                GroupName = p.IdSpiskaGrupp.HasValue ? p.SpisokGrupp.Gruppa : "",
                SubGroupId = p.NomerPodGrupp,
                SubGroupName = p.NomerPodGrupp.HasValue ? p.NomerPodGrupp.Value.ToString() : "",
                SpecialityId = p.SpezialRazdeliDisziplini.IdSpezMeta,
                SpecialityName = p.SpezialRazdeliDisziplini.Spezialnost_SpezialnostMeta.Spezialnost.Spez +
                                 p.SpezialRazdeliDisziplini.Spezialnost_SpezialnostMeta.GodPostup,
                FormOfStudyId = p.SpezialRazdeliDisziplini.Spezialnost_SpezialnostMeta.IdFrmObuch,
                FormOfStudyName = p.SpezialRazdeliDisziplini.Spezialnost_SpezialnostMeta.FormObuchDictionary.Name,
                ////время занятия
                LessonTime = p.VremyaZanyatia.StartTime.ToString("H.mm") + "-" +
                             p.VremyaZanyatia.EndTime.ToString("H.mm"),
                LessonStartTime = p.VremyaZanyatia.StartTime,

                LessonTypeId = p.VidiRabot.Id,
                LessonTypeName = p.VidiRabot.VidRabSokr,
                LessonTypeShortName = p.VidiRabot.VidRabAbbreviatura,
                Classroom = p.Auditoriya,

                PropodMeta = new UserMetaViewModel()
                {
                    UserId = p.Prepod_PrepodiCafedri.Prepod_PrepodMeta.UserId,
                    UserFullName = p.Prepod_PrepodiCafedri.Prepod_PrepodMeta.User.UserMeta.First().LastName + " " +
                                   p.Prepod_PrepodiCafedri.Prepod_PrepodMeta.User.UserMeta.First().FirstName + " " +
                                   p.Prepod_PrepodiCafedri.Prepod_PrepodMeta.User.UserMeta.First().MiddleName
                }
            };
        }
示例#3
0
        public Raspisanie AddParaForPrepod(ParaViewModel model)
        {
            Spezialnost_SpezialnostMeta spezialnostSpezialnostMeta =
                _dataProvider.SpezialnostMeta.FirstOrDefault(
                    x => x.IdSpez == model.SpezialnostId && x.GodPostup == model.Year);

            SpezialRazdeliDisziplini spezialRazdeliDisziplini = _dataProvider.SpezialRazdeliDisziplini.FirstOrDefault(
               x => x.IdDisciplini == model.DisciplineId && x.IdSpezMeta == spezialnostSpezialnostMeta.Id);

            DateTime dateOfPara = DateTime.Parse(model.DateOfPara);

            Prepod_PrepodMeta prepodPrepodMeta = _dataProvider.PrepodMetadata.FirstOrDefault(x => x.UserId == model.PrepodId);
            Prepod_PrepodiCafedri prepodPrepodiCafedri = _dataProvider.PrepodiCafedri.FirstOrDefault(x => x.IdSotr == prepodPrepodMeta.Id);

            Raspisanie raspisanie = new Raspisanie()
            {
                Data = dateOfPara,
                IdUchPlanaDisciplini = spezialRazdeliDisziplini.IdUpPlanDisciplini,
                IdVidaRaboti = model.TypeOfParaId,
                IdVremyaZanyatia = model.TimeOfParaId,
                Pot = model.ПотокИд,//для преподов на русском
                IdSpiskaGrupp = model.GroupId != 0 ? model.GroupId : (int?)null,
                NomerPodGrupp = model.SubgroupId != 0 ? model.SubgroupId : (int?)null,
                IdPrepodaCafedri = prepodPrepodiCafedri.Id,
                NomerZanyatiaVSemestre = 0,
                Auditoriya = model.Auditory,
                TipNagruzki = 80
            };

            bool isParaExist = CheckForParaIdentity(raspisanie);
            bool isPrepodHasNakladki = PrivateCheckForNakladkiForPrepod(raspisanie);
            bool isGroupHasNakladki = PrivateCheckForNakladkiForGroup(raspisanie);

            if (!isParaExist && !isPrepodHasNakladki && !isGroupHasNakladki)
            {
                _dataProvider.Raspisanie.Add(raspisanie);
                _dataProvider.Save();
            }
            else
            {
                throw new ArgumentException("У преподавателя накладки, измените время/дату пары");
            }

            return raspisanie;
        }
示例#4
0
        /// <summary>
        /// проверка на то чтобы в одно и то же время у препода не было другой пары
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool PrivateCheckForNakladkiForPrepod(Raspisanie model)
        {
            bool isPrepodHasNakladki
                = _dataProvider.Raspisanie.FilterNoTracking(
                x => x.Data == model.Data && x.IdPrepodaCafedri == model.IdPrepodaCafedri)
                .Any(x => x.IdVremyaZanyatia == model.IdVremyaZanyatia);

            return isPrepodHasNakladki;
        }
示例#5
0
 /// <summary>
 /// Проверка на идентичность пары(дублирование)
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 private bool CheckForParaIdentity(Raspisanie model)
 {
     bool isParaExist = _dataProvider.Raspisanie.FilterNoTracking(x => x.Data == model.Data)
         .Any(x => x.Auditoriya == model.Auditoriya &&
                 x.IdPrepodaCafedri == model.IdPrepodaCafedri &&
                 x.IdVremyaZanyatia == model.IdVremyaZanyatia &&
                 x.IdUchPlanaDisciplini == model.IdUchPlanaDisciplini &&
                 x.IdVidaRaboti == model.IdVidaRaboti &&
                 x.Pot == model.Pot &&
                 x.IdSpiskaGrupp == model.IdSpiskaGrupp &&
                 x.NomerPodGrupp == model.NomerPodGrupp);
     return isParaExist;
 }
示例#6
0
        /// <summary>
        /// проверка на то чтобы в одно и то же время у группы не было другой пары
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool PrivateCheckForNakladkiForGroup(Raspisanie model)
        {
            bool isGroupHasAnotherParaInTheSameTime;

            List<Raspisanie> raspisanies = _dataProvider.Raspisanie.FilterNoTracking(
                x => x.Data == model.Data && x.Pot == model.Pot && x.IdVremyaZanyatia == model.IdVremyaZanyatia && x.IdVidaRaboti == 5).ToList();
            if (raspisanies.Count > 0)
            {
                isGroupHasAnotherParaInTheSameTime = true;

            }
            else
            {
                isGroupHasAnotherParaInTheSameTime = _dataProvider.Raspisanie.FilterNoTracking(
               x => x.Data == model.Data && x.Pot == model.Pot && x.IdSpiskaGrupp == model.IdSpiskaGrupp && x.NomerPodGrupp == model.NomerPodGrupp)
               .Any(x => x.IdVremyaZanyatia == model.IdVremyaZanyatia);
            }

            return isGroupHasAnotherParaInTheSameTime;
        }