Пример #1
0
        private void Reject_Click(object sender, RoutedEventArgs e)
        {
            string to      = parsedData.Email;
            string subject = "Zamówienie nr. " + parsedData.Number;
            string content = "Przepraszamy, ale zamówienia zostało anulowane.";

            MailSender mailSender = new MailSender();

            mailSender.Send(to, content, subject);

            Database.assignments.SelectAll().RemoveAll(x => x.orderId == parsedData.Number);
            Database.assignments.SaveData();
            Database.orders.SelectAll().RemoveAll(x => x.Number == parsedData.Number);
            Database.orders.SaveData();

            unfinishedIds.Remove(parsedData.Number);
            ids.Remove(parsedData.Number);

            UnfinishedOrdersList.Items.Refresh();
            OrdersList.Items.Refresh();

            MessageBox.Show("Odmowa została wysłana.", "Wysłanie wiadomości");
            var step = new Process().Next(StepNames.OrderMerged, DecisionType.Decline);

            ShitHelper.Publish(step.CurrentStep, new ProcessMessage
            {
                Step = step.CurrentStep,
            });

            SetEditorFromOrder(null);
        }
Пример #2
0
        public void Send(OrderData data)
        {
            var process = new Process();
            var current = process.Start;
            var number  = GenerateNumber;

            IncreaseNumber();
            data.Number = number;
            var prezes   = _emails.FirstStepWorkers().FirstOrDefault();
            var products = String.Join("\n", data.Products.Select(x => $"{x.Product}: {x.Quantity}"));

            _mailSender.Send(prezes,
                             $"nowe zamówienie o numerze {number} od {data.Name} {data.LastName}\nzamówienie na:\n{products}",
                             $"nowe zamówienie nr {number}", new List <Attachment>
            {
                Attachment.CreateAttachmentFromString(JsonConvert.SerializeObject(data), $"zamówienie_{number}.json")
            });
            ShitHelper.Publish(current.CurrentStep, new ProcessMessage
            {
                Step        = current.CurrentStep,
                Attachments = new Dictionary <Data, object>
                {
                    { Data.OrderDataFile, JsonConvert.SerializeObject(data) }
                }
            });
        }
Пример #3
0
        private void RefreshButton_Click(object sender, RoutedEventArgs e)
        {
            ids.Clear();
            unfinishedIds.Clear();

            messages = EmailRepository.GetAllMessages();
            List <WorkerAssignmentData> assignments = Database.assignments.SelectAll();

            List <int> orderIds = assignments.Select(x => x.orderId).Distinct().ToList();

            foreach (int orderId in orderIds)
            {
                IEnumerable <MailMessage> messagesFiltered = messages.Where(x => x.Subject.EndsWith("Zamówienie nr " + orderId));
                if (!messagesFiltered.Any())
                {
                    unfinishedIds.Add(orderId);
                    continue;
                }

                List <MailMessage> messagesForOrder = messagesFiltered.ToList();

                List <WorkerAssignmentData> assignmentsForOrder = assignments.Where(x => x.orderId == orderId).ToList();

                if (messagesForOrder.Count < assignmentsForOrder.Count)
                {
                    unfinishedIds.Add(orderId);
                    continue;
                }

                //sprawdzenie czy każdy pracownik wysłał maila
                bool unfinished = false;
                foreach (WorkerAssignmentData workerAssignment in assignmentsForOrder)
                {
                    if (!messagesForOrder.Exists(x => x.From != null && workerAssignment.worker.Email == x.From.Address))
                    {
                        unfinishedIds.Add(orderId);
                        unfinished = true;
                        break;
                    }
                }

                if (!unfinished)
                {
                    ids.Add(orderId);
                }

                //rozumiem ze tutaj jest juz sytuacja w której excele są zmergowane??? Jesli tak to ten kod jes ok
                var step = new Process().Next(StepNames.OrderForImplementation, DecisionType.Ok);
                ShitHelper.Publish(step.CurrentStep, new ProcessMessage
                {
                    Step = step.CurrentStep,
                });
            }

            OrdersList.Items.Refresh();
            UnfinishedOrdersList.Items.Refresh();
        }
Пример #4
0
        private void PushProcess(DecisionType decision, Dictionary <Data, object> attachs)
        {
            if (messageId.HasValue)
            {
                ShitHelper.Model.BasicAck(messageId.Value, false);
            }
            var nextStep = new Process().Next(Process.MyStep, decision);

            ShitHelper.Publish(nextStep.CurrentStep, new ProcessMessage
            {
                Step        = nextStep.CurrentStep,
                Attachments = attachs
            });
        }
Пример #5
0
        private void SendButton_Click(object sender, RoutedEventArgs e)
        {
            if (!Validate())
            {
                MessageBox.Show("Proszę o przypisanie pracownika do realizacji wszystkich części zamówienia!", "Nie przypisane elementy zamówienia");
            }
            else
            {
                Database.orders.InsertElement(data);

                string Body    = "W załączniku otrzymał Pan/Pani dokument excel, który musi zostać uzupełniony.";
                string Subject = "Zamówienie nr " + data.Number;


                foreach (WorkerAssignmentData assignment in assignments)
                {
                    if (assignment.orders.Count > 0)
                    {
                        Database.assignments.InsertElement(assignment);
                        SendAssignment(assignment);

                        string   fileName = assignment.worker.LastName + "_zamowienie.xls";
                        Workbook workbook = ExcelManager.CreateWorkbookFromAssignment(assignment);
                        workbook.Save(fileName);

                        MailSender  esender   = new MailSender();
                        MailMessage MyMessage = new MailMessage();
                        MyMessage.Attachments.Add(new MailAttachment(fileName));

                        esender.Send(assignment.worker.Email, Body, Subject, MyMessage.Attachments);
                    }
                }

                ShitHelper.Model.BasicAck(_tag, false);
                var step = new Process().Next(StepNames.OrderAccepted, DecisionType.Ok);
                ShitHelper.Publish(step.CurrentStep, new ProcessMessage
                {
                    Step = step.CurrentStep,
                });
                MessageBox.Show("Zamówienie zostało przekazane do dalszej realizacji.");
                GotoMainWindow();
            }
        }
Пример #6
0
        private void Accept_Click(object sender, RoutedEventArgs e)
        {
            //ZMIENNE Z KTÓRYCH MOŻESZ KORZYSTAĆ ::
            //parsedData -> przetwarzane zamówienie, typ OrderData
            //parsedProductList -> produkty wzbogacone o informacje z excela. NIE KORZYSTAJ Z parsedOrder.Products !!!!!!!!!1

            MessageBox.Show("Tutaj należy dodać dalszą część.", "Wysłanie wiadomości");

            var step = new Process().Next(StepNames.OrderMerged, DecisionType.Ok);

            ShitHelper.Publish(step.CurrentStep, new ProcessMessage
            {
                Step        = step.CurrentStep,
                Attachments = new Dictionary <Data, object>
                {
                    { Data.OrderDataFile, JsonConvert.SerializeObject(parsedData) }
                }
            });

            SetEditorFromOrder(null);
        }