private void RestoreFromCache() { using (var context = new CourierDatabase()) { List <DeliveryAct> list = cache.Elements; List <int> ids = new List <int>(); foreach (DeliveryAct item in cache.Elements) { DeliveryAct element = context.DeliveryActs.FirstOrDefault(rec => rec.Id == item.Id); if (element == null) { element = new DeliveryAct(); context.DeliveryActs.Add(element); element.Id = item.Id; } element.CourierFIO = item.CourierFIO; element.DeliveryType = item.DeliveryType; element.DeliveryDate = item.DeliveryDate; element.PromoEffects = item.PromoEffects; ids.Add(element.Id); } List <DeliveryAct> listToRemove = context.DeliveryActs.Where(rec => !ids.Contains(rec.Id)).ToList(); context.DeliveryActs.RemoveRange(listToRemove); } isDisconnected = false; }
private void Restore(Memento memento) { List <int> ids = new List <int>(); foreach (DeliveryAct item in (List <DeliveryAct>)memento.Obj) { DeliveryAct act = deliveryActs.FirstOrDefault(rec => rec.Id == item.Id); if (act == null) { logic.Create(item); } else { logic.Update(act); } ids.Add(item.Id.Value); } foreach (DeliveryAct item in deliveryActs.Where(rec => !ids.Contains(rec.Id.Value))) { logic.Delete(item); } LoadData(false); }
private void buttonUpdate_Click(object sender, EventArgs e) { if (controlDataTreeRow.SelectedNode == null) { MessageBox.Show("Выберете элемент", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { try { DeliveryAct deliveryAct = ParseActFromForm(); var form = Container.Resolve <FormDeliveryAct>(); form.Act = deliveryAct; if (form.ShowDialog() == DialogResult.OK) { logic.Update(form.Act); MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); LoadData(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public void Update(CourierBusinessLogic.Models.DeliveryAct act) { try { if (isDisconnected) { RestoreFromCache(); } using (var context = new CourierDatabase()) { DeliveryAct element = context.DeliveryActs.FirstOrDefault(rec => rec.Id == act.Id); if (element == null) { throw new Exception("Элемент не найден"); } element.CourierFIO = act.CourierFIO; element.DeliveryType = act.DeliveryType.Value; element.DeliveryDate = act.DeliveryDate; element.PromoEffects = act.PromoEffects; context.SaveChanges(); List <DeliveryAct> list = cache.Elements; DeliveryAct cacheElement = list.FirstOrDefault(rec => rec.Id == act.Id); cacheElement.CourierFIO = act.CourierFIO; cacheElement.DeliveryType = act.DeliveryType.Value; cacheElement.DeliveryDate = act.DeliveryDate; cacheElement.PromoEffects = act.PromoEffects; cache.Elements = list; } } catch (DbUpdateException) { isDisconnected = true; List <DeliveryAct> list = cache.Elements; DeliveryAct element = list.FirstOrDefault(rec => rec.Id == act.Id); if (element == null) { throw new Exception("Элемент не найден"); } element.CourierFIO = act.CourierFIO; element.DeliveryType = act.DeliveryType.Value; element.DeliveryDate = act.DeliveryDate; element.PromoEffects = act.PromoEffects; cache.Elements = list; throw new Exception("При работе с базой данных произошла ошибка. Изменения сохранены в кэш"); } }
public void Modify(DeliveryAct act, string value) { int days = int.Parse(value); if (act.DeliveryDate.HasValue) { act.DeliveryDate = act.DeliveryDate.Value.AddDays(days); } }
public FormChangeType(DeliveryAct act) { InitializeComponent(); this.act = act; foreach (var item in Enum.GetValues(typeof(DeliveryType))) { comboBox.Items.Add(item); } comboBox.SelectedItem = act.DeliveryType.Value; }
private void InvokePlugin(Action <DeliveryAct, string> modify) { DeliveryAct deliveryAct = ParseActFromForm(); string value = textBoxModifyValue.Text; modify(deliveryAct, value); logic.Update(deliveryAct); MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); LoadData(); }
private void InvokePlugin(PluginManager.FormDelegate change) { DeliveryAct deliveryAct = ParseActFromForm(); var form = change(deliveryAct); if (form.ShowDialog() == DialogResult.OK) { logic.Update(deliveryAct); MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); LoadData(); } }
public FormDeliveryAct() { InitializeComponent(); foreach (var item in Enum.GetValues(typeof(DeliveryType))) { controlComboBoxDeliveryType.LoadElement(item); } controlInputDateDeliveryDate.Value = DateTime.Now; labelEffects.Text = controlPromoCode.Effect; act = new DeliveryAct(); }
private void buttonDelete_Click(object sender, EventArgs e) { if (controlDataTreeRow.SelectedNode == null) { MessageBox.Show("Выберете элемент", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { try { DeliveryAct deliveryAct = ParseActFromForm(); logic.Delete(deliveryAct); MessageBox.Show("Удаление прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); LoadData(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public void Print(DeliveryAct act) { Document document = new Document(); Style style = document.Styles["Normal"]; style.Font.Name = "Times New Roman"; style.Font.Size = 14; style = document.Styles.AddStyle("NormalTitle", "Normal"); style.Font.Bold = true; Section section = document.AddSection(); Paragraph paragraphCourier = section.AddParagraph("Курьер: " + act.CourierFIO); paragraphCourier.Format.SpaceAfter = "0,1cm"; Paragraph paragraphType = section.AddParagraph("Тип доставки: " + act.DeliveryType); paragraphType.Format.SpaceAfter = "0,1cm"; Paragraph paragraphDate = section.AddParagraph("Дата доставки: " + act.DeliveryDate); paragraphDate.Format.SpaceAfter = "0,1cm"; using (var dialog = new SaveFileDialog { Filter = "(*.pdf)|*.pdf" }) { if (dialog.ShowDialog() == DialogResult.OK) { PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always) { Document = document }; renderer.RenderDocument(); renderer.PdfDocument.Save(dialog.FileName); } } }
public void Create(CourierBusinessLogic.Models.DeliveryAct act) { try { if (isDisconnected) { RestoreFromCache(); } using (var context = new CourierDatabase()) { DeliveryAct element = new DeliveryAct(); context.DeliveryActs.Add(element); if (act.Id.HasValue) { element.Id = act.Id.Value; } else { Random rnd = new Random(); while (true) { element.Id = rnd.Next(0, int.MaxValue); if (context.DeliveryActs.FirstOrDefault(rec => rec.Id == element.Id) == null) { break; } } } element.CourierFIO = act.CourierFIO; element.DeliveryType = act.DeliveryType.Value; element.DeliveryDate = act.DeliveryDate; element.PromoEffects = act.PromoEffects; context.SaveChanges(); List <DeliveryAct> list = cache.Elements; list.Add(element); cache.Elements = list; } } catch (DbUpdateException) { isDisconnected = true; DeliveryAct element = new DeliveryAct(); if (act.Id.HasValue) { element.Id = act.Id.Value; } else { Random rnd = new Random(); while (true) { element.Id = rnd.Next(0, int.MaxValue); if (cache.Elements.FirstOrDefault(rec => rec.Id == element.Id) == null) { break; } } } element.CourierFIO = act.CourierFIO; element.DeliveryType = act.DeliveryType.Value; element.DeliveryDate = act.DeliveryDate; element.PromoEffects = act.PromoEffects; List <DeliveryAct> list = cache.Elements; list.Add(element); cache.Elements = list; throw new Exception("При работе с базой данных произошла ошибка. Изменения сохранены в кэш"); } }
public Form ChangeForm(DeliveryAct act) { return(new FormChangeType(act)); }
private void InvokePlugin(Action <DeliveryAct> print) { DeliveryAct deliveryAct = ParseActFromForm(); print(deliveryAct); }