private void savingChangesToDB(List <MarkObject> marks, int idCurrentTeacher)
        {
            if (marks != null)
            {
                foreach (var m in marks)
                {
                    Сriteria_Teachers selectedCriteria = db.Сriteria_Teachers.Single(c => c.Id == m.CriteriaId);

                    // if the record exists in database
                    if (db.Mark_Teachers.Any(mt => mt.Id_teachers == idCurrentTeacher && mt.Id_Criteria == m.CriteriaId))
                    {
                        if (!m.IsUsing)
                        {
                            deleteMarkTeacher(idCurrentTeacher, m);
                        }
                        else
                        {
                            editMarkTeacher(idCurrentTeacher, m, selectedCriteria);
                        }
                    }
                    else //if the record doesn`t exists in database
                    if (m.IsUsing)
                    {
                        createMarkTeacher(idCurrentTeacher, m, selectedCriteria);
                    }
                }
            }
        }
        private void editMarkTeacher(int idCurrentTeacher, MarkObject m, Сriteria_Teachers selectedCriteria)
        {
            Mark_Teachers editMarkT =
                db.Mark_Teachers.Single(
                    mt => mt.Id_teachers == idCurrentTeacher && mt.Id_Criteria == m.CriteriaId);
            List <Status_Doc_Teacher> oldFiles =
                db.Status_Doc_Teacher.Where(d => d.Id_Mark_Teacher == editMarkT.Id).ToList();

            if (m.Count != editMarkT.Kolvo_ed.Value)
            {
                editMarkT.Kolvo_ed = m.Count;

                editMarkT.Kolvo_Mark = selectedCriteria.Mark * m.Count;
                editMarkT.Date       = DateTime.Now;
                db.SaveChanges();
            }
            refreshDocs(oldFiles, m, editMarkT);
        }
        private void createMarkTeacher(int idCurrentTeacher, MarkObject m, Сriteria_Teachers selectedCriteria)
        {
            Mark_Teachers newMarkTeachers = new Mark_Teachers();

            newMarkTeachers.Id_teachers = idCurrentTeacher;
            newMarkTeachers.Id_Criteria = m.CriteriaId;
            newMarkTeachers.Kolvo_ed    = m.Count;
            if (m.NewFiles == null || m.NewFiles[0] == null)
            {
                newMarkTeachers.Status = -2;
            }
            else
            {
                newMarkTeachers.Status = 0;
            }
            newMarkTeachers.Kolvo_Mark = selectedCriteria.Mark * m.Count;
            newMarkTeachers.Date       = DateTime.Now;

            if (m.NewFiles != null)
            {
                newMarkTeachers.Status_Doc_Teacher = new List <Status_Doc_Teacher>();
                foreach (var item in m.NewFiles)
                {
                    if (item != null)
                    {
                        var document = new Status_Doc_Teacher()
                        {
                            Link_Doc    = Guid.NewGuid() + Path.GetFileName(item.FileName),
                            Name        = item.FileName,
                            FileType    = item.ContentType,
                            FileContent = item.ContentLength
                        };
                        newMarkTeachers.Status_Doc_Teacher.Add(document);
                        item.SaveAs(Path.Combine(Server.MapPath("~/documents"), document.Link_Doc));
                    }
                }
            }
            db.Mark_Teachers.Add(newMarkTeachers);
            db.SaveChanges();
        }