/// <summary> /// Синхронизация /// </summary> private void Synchronization() { if (work.IsConnect()) { connectStatus.Text = "Соединение есть"; connectStatus.Image = Resources.connect; var delEvent = WorkBD.Select_query($"select nc.calendar_name, ec.Id, ec.Calendar_Event from Del_Event de, Name_Calendar nc, Events_calendar ec where nc.Id = (select NameId from Activity where Id = de.Event_Cal_id) and ec.Id = (select EvendId from Activity where Id = de.Event_Cal_id)"); foreach (DataRow delete in delEvent.Rows) { var Cal = JsonConvert.DeserializeObject <CalendarListEntry>(delete.ItemArray[0].ToString()); var Eve = JsonConvert.DeserializeObject <Event>(delete.ItemArray[2].ToString()); WorkBD.Execution_query($"delete from Events_calendar where Id = {delete.ItemArray[1].ToString()}"); work.DeleteEvent(Eve, Cal.Id); } WorkBD.Execution_query($"delete from Del_Event"); var insEvent = WorkBD.Select_query($"select nc.Id_Calendar, ie.New_Ev from Ins_Event ie, Name_Calendar nc where nc.Id = ie.Cal_Id"); foreach (DataRow insert in insEvent.Rows) { var Eve = JsonConvert.DeserializeObject <Event>(insert.ItemArray[1].ToString()); Eve.Id = null; work.CreateEvent(Eve, insert.ItemArray[0].ToString()); } WorkBD.Execution_query("delete from Ins_Event"); var modEvent = WorkBD.Select_query($"select nc.Id_Calendar, me.New_Event, ncc.Id_Calendar, case when me.New_Calendar = a.NameId then 1 else 0 end from Mod_Event me left join Activity a on a.Id = me.RecordId, Name_Calendar nc, Name_Calendar ncc where nc.Id = a.NameId and ncc.Id = me.New_Calendar"); foreach (DataRow mod in modEvent.Rows) { var newEvent = JsonConvert.DeserializeObject <Event>(mod.ItemArray[1].ToString()); if (mod.ItemArray[3].ToString() == "1") { work.UpdateEvent(newEvent, mod.ItemArray[0].ToString()); } else { work.UpdateEvent(newEvent, mod.ItemArray[0].ToString(), mod.ItemArray[2].ToString()); } } WorkBD.Execution_query("delete from Mod_Event"); ActionRun(() => Filling()); foreach (var items in Calendar_s.ToArray()) { WorkBD.Execution_query($"if exists(select Id from Name_Calendar where Id_Calendar = N'{items.calendar.Id}' and Id_User = (select Id from Users where UserName = N'{work.User}')) update Name_Calendar set calendar_name = N'{JsonConvert.SerializeObject(items.calendar)}' where Id_Calendar = N'{items.calendar.Id}' and Id_User = (select Id from Users where UserName = N'{work.User}') else insert into Name_Calendar (calendar_name, Id_Calendar, Id_User) values (N'{JsonConvert.SerializeObject(items.calendar)}', N'{items.calendar.Id}', (select Id from Users where UserName = N'{work.User}'))"); foreach (Event events in items.events.ToArray()) { var result = WorkBD.Select_query($"if exists(select Id from Activity where NameId = (select Id from Name_Calendar where Id_Calendar = N'{items.calendar.Id}' and Id_User = (select Id from Users where UserName = N'{work.User}')) and EvendId = (select Id from Events_calendar where Id_Event = N'{events.Id}')) select 1 else select 0"); if (result.Rows[0].ItemArray[0].ToString() == "1") { WorkBD.Execution_query($"update Events_calendar set Calendar_event = N'{JsonConvert.SerializeObject(events)}' where Id_Event = N'{events.Id}'"); } else { WorkBD.Execution_query($"if not exists(select Id from Events_calendar where Id_Event = N'{events.Id}') insert into Events_calendar (Calendar_event, Id_Event) values (N'{JsonConvert.SerializeObject(events)}', N'{events.Id}')"); WorkBD.Execution_query($"insert into Activity (NameId, EvendId, Date_Event) values ((select Id from Name_Calendar where Id_Calendar = N'{items.calendar.Id}' and Id_User = (select Id from Users where UserName = N'{work.User}')), (select Id from Events_calendar where Id_Event = N'{events.Id}'), CONVERT(DATETIME, N'{work.DateEvent(events.Start).ToString("yyyyMMdd HH:mm:ss")}', 102) )"); } } } } else { connectStatus.Text = "Соединение отсутствует"; connectStatus.Image = Resources.disconect; ActionRun(() => Filling()); } ActionRun(() => UpdTable()); ActionRun(() => Drawing_Calendar(new DateTime(year, month, 1))); }
private void delEvent_Click(object sender, EventArgs e) { Work.DeleteEvent(SelectEvent, SourceCalendar.Id); Close(); }