Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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("При работе с базой данных произошла ошибка. Изменения сохранены в кэш");
            }
        }
Пример #5
0
        public void Modify(DeliveryAct act, string value)
        {
            int days = int.Parse(value);

            if (act.DeliveryDate.HasValue)
            {
                act.DeliveryDate = act.DeliveryDate.Value.AddDays(days);
            }
        }
Пример #6
0
        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;
        }
Пример #7
0
        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();
        }
Пример #8
0
        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();
            }
        }
Пример #9
0
        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();
        }
Пример #10
0
        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);
                }
            }
        }
Пример #11
0
        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);
                }
            }
        }
Пример #12
0
        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("При работе с базой данных произошла ошибка. Изменения сохранены в кэш");
            }
        }
Пример #13
0
 public Form ChangeForm(DeliveryAct act)
 {
     return(new FormChangeType(act));
 }
Пример #14
0
        private void InvokePlugin(Action <DeliveryAct> print)
        {
            DeliveryAct deliveryAct = ParseActFromForm();

            print(deliveryAct);
        }