public Marker(int month, int day, CodingMarker state, int UserId) { this.month = month; this.day = day; this.state = state; this.UserId = UserId; }
//Проверяет изменение каждой ячейки календаря и обновляет их кодировку(CodingMarker) в базе данных(DataModel.Marker) через Controller private void dataGridView2_CellValueChanged(object sender, DataGridViewCellEventArgs e) { DataGridViewTextBoxCell cell = (DataGridViewTextBoxCell)timeTableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (Enum.IsDefined(typeof(CodingMarker), cell.Value)) { List <User> users = Controller.getUsersFromDatabase(DepartmentBox, monthNumber); CodingMarker state = (CodingMarker)Enum.Parse(typeof(CodingMarker), cell.Value.ToString()); Controller.setMarkerToDatabase(monthNumber, e.ColumnIndex - 2, users[e.RowIndex].Id, state); } else if (e.ColumnIndex > 3) { string output = "Виды отметок с кодировкой на работе, с кодировкой: \n" + "Я – полный рабочий день; \n" + "Н – отсутствие на рабочее место по невыясненным причинам; \n" + "В – выходные и праздничные дни; \n" + "Рв – работа в праздничные и выходные дни; а также работа в праздничные и выходные дни, при \n" + "нахождении в командировке; \n" + "Б – дни временной нетрудоспособности; \n" + "К – командировочные дни; а также, выходные (нерабочие) дни при нахождении в командировке, \n" + "когда сотрудник отдыхает, в соответствии с графиком работы ООО «Наука» в командировке; \n" + "ОТ – ежегодный основной оплаченный отпуск; \n" + "До – неоплачиваемый отпуск (отпуск за свой счет); \n" + "Хд – хозяйственный день; \n" + "У – отпуск на период обучения. \n" + "Ож – Отпуск по уходу за ребенком. \n"; MessageBox.Show(output, "Вы ввели неправильную кодировку! \n "); UpdateSheet(); } else { string output = "Данные пользователей можно менять в другом окне"; MessageBox.Show(output, "Запрет! \n "); } }
// Устанавливает кодированную метку Юзера в календарь, если метка == Н то удаляется т.к метка Н всегда по дефолту даже в выходные дни=) public static void setMarkerToDatabase(int monthNumber, int Day, int UserId, CodingMarker state) { using (DataContext context = new DataContext()) { try { var marker = context.Markers.FirstOrDefault(m => m.month == monthNumber && m.day == Day && m.UserId == UserId); if (state == CodingMarker.Н) { context.Markers.Remove(marker); context.SaveChanges(); } else { marker.state = state; context.SaveChanges(); } } catch (System.NullReferenceException error) { if (state == CodingMarker.Н) { return; } var marker = new Marker() { month = monthNumber, day = Day, UserId = UserId, state = state }; context.Markers.Add(marker); context.SaveChanges(); } } }