// *** Start programmer edit section *** (ЭлектроннаяЗачётка CustomMembers) private bool MarkExist(IEnumerable marksCollection, NewPlatform.RecordBookBL.Оценка оценка, bool searchAmongDetails) { var marksCollectionForQuery = marksCollection.Cast <NewPlatform.RecordBookBL.Оценка>(); var count = searchAmongDetails ? 1 : 0; var названиеДисциплины = оценка.Предмет.Дисциплина.Название; var фиоСтудента = оценка.Студент.ФИО; var названиеСеместра = оценка.Предмет.Семестр.Название; return(marksCollectionForQuery.Count(m => m.Предмет.Дисциплина.Название == названиеДисциплины && m.Студент.ФИО == фиоСтудента && m.Предмет.Семестр.Название == названиеСеместра) > count); }
// *** End programmer edit section *** (ЭлектроннаяЗачётка CustomMembers) // *** Start programmer edit section *** (OnUpdateОценка CustomAttributes) // *** End programmer edit section *** (OnUpdateОценка CustomAttributes) public virtual ICSSoft.STORMNET.DataObject[] OnUpdateОценка(NewPlatform.RecordBookBL.Оценка UpdatedObject) { // *** Start programmer edit section *** (OnUpdateОценка) var monthOfExam = UpdatedObject.Дата.Month; if (monthOfExam != 1 && monthOfExam != 6) { throw new Exception("Экзамены и зачеты могут быть сданы только в январе или в июне!"); } if (UpdatedObject.GetStatus() == ObjectStatus.Created) { var markQuery = ((SQLDataService)DataService).Query <Оценка>(Оценка.Views.ОценкаE); var markExist = MarkExist(markQuery, UpdatedObject, false) || MarkExist(UpdatedObject.Предмет.Оценка, UpdatedObject, true); if (markExist) { throw new Exception($"У студента '{UpdatedObject.Студент.ФИО}' уже выставлена оценка по предмету '{UpdatedObject.Предмет.Дисциплина.Название}' в семестре '{UpdatedObject.Предмет.Семестр.Название}'"); } if (UpdatedObject.Значение == ЗначениеОценки.НетОценки) { UpdatedObject.Состояние = СостояниеОценки.ОценкаНеВыставлена; } else { UpdatedObject.Состояние = СостояниеОценки.ОценкаВыставлена; } } else if (UpdatedObject.GetStatus() == ObjectStatus.Altered) { if (UpdatedObject.Состояние == СостояниеОценки.ОценкаНеВыставлена && UpdatedObject.Значение != ЗначениеОценки.НетОценки) { UpdatedObject.Состояние = СостояниеОценки.ОценкаВыставлена; } else if (UpdatedObject.Состояние == СостояниеОценки.ОценкаВыставлена && UpdatedObject.Значение != ((Оценка)UpdatedObject.GetDataCopy()).Значение) { UpdatedObject.Состояние = СостояниеОценки.ОценкаИсправлена; } } return(new ICSSoft.STORMNET.DataObject[0]); // *** End programmer edit section *** (OnUpdateОценка) }
public virtual void Add(NewPlatform.RecordBookBL.Оценка dataobject) { this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject))); }