示例#1
0
        public ViewModel()
        {
            #region -- Test Zone !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --


            #endregion -- http://www.aspsnippets.com/Articles/Save-and-Retrieve-Files-from-SQL-Server-Database-using-ASPNet.aspx --

            // -- Set default déclartion tpe --
            SelectedReportType = "Déclaration de vol";

            // --  --
            reportSelectType = SelectedReportType == "Déclaration de vol" ? "Volées" : "Perdues";

            // -- Get Username connect --
            userLogin = Environment.UserName.ToUpper();

            // -- define user email --
            userMail = userLogin.Replace("HILTI\\", string.Empty) + "@hilti.com";

            // -- Define all Admin allowed for Simulator adminitration page --
            allowedAccessToAdminSet = new HashSet <string>()
            {
                "MABOMIC", "RODRIGB"
            };

            // -- Clear --
            CustomerStolenToolsList.Clear();

            #region -- Set Window's visibility --
            //IsCheckCustomerCommandVisible = Visibility.Collapsed;

            IsCheckCustomerVisible       = Visibility.Visible;
            IsCustomerParkVisible        = Visibility.Collapsed;
            IsAdminVisible               = Visibility.Collapsed;
            IsStolenMachineVisible       = Visibility.Collapsed;
            isSendMailVisible            = Visibility.Collapsed;
            IsLoadingWindowVisible       = Visibility.Collapsed;
            IsSendSimulToCustomerVisible = Visibility.Collapsed;
            #endregion

            #region -- Commande qui permet de vérifier le customerID et de passer à la fenêtre qui affiche son park machine --
            checkCustomerCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                GetCustomer();
            }));
            #endregion

            #region -- Commande qui permet de retourner à l'accuiel à partir de la deuxième page --
            backToCheckCustomerCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                IsCheckCustomerVisible = Visibility.Visible;
                IsCustomerParkVisible  = Visibility.Collapsed;
            }));
            #endregion

            #region -- Commande qui permet de continuer vers la simulation et qui affiche les machines volées --
            goToSimulationCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                // -- Clear Contact list --
                CustomerStolenToolsList.Clear();

                #region -- populate Customer stolen machines list --

                foreach (var item in CustomerParkList.Where(x => x.IsStolen == true))
                {
                    CustomerStolenToolsList.Add(item);
                }

                // -- Display Customer stolen machine list in CollectionViewSource --
                MachinesView = CollectionViewSource.GetDefaultView(CustomerStolenToolsList);
                // -- Clear collection view --
                MachinesView.GroupDescriptions.Clear();
                MachinesView.GroupDescriptions.Add(new PropertyGroupDescription("Designation"));

                //List<string> materialList = new List<string>() { "76341", "123456", "7564532", "A10001896", "545018749" };
                // --  --
                Task.Run(() =>
                {
                    // -- Show loading page --
                    IsLoadingWindowVisible = Visibility.Visible;

                    SimulationResult simulationResult = server.GetRemaingCost(CustomerStolenToolsList.Select(p => p.Serial).ToList(), "11190312", "Demande du client", SelectedReportType);

                    //for (int i = 0; i < 10000; i++)
                    //{
                    //    Console.WriteLine(i.ToString());
                    //}

                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        IsLoadingWindowVisible = Visibility.Collapsed;
                        IsStolenMachineVisible = Visibility.Visible;
                        IsCustomerParkVisible  = Visibility.Collapsed;
                    }));

                    AmountToBePaid   = simulationResult.Amount;
                    SimulationNumber = simulationResult.NumAvis;
                    selectContact    = simulationResult.Contact;
                });

                // -- Set Message on GridView Top --
                SecondReport = SelectedReportType == "Déclaration de vol" ? "Ci - dessous la liste des machines déclarées volées par ce client" :
                               "Ci - dessous la liste des machines déclarées perdues par ce client";
                #endregion
            }));
            #endregion

            #region -- Commande qui permet de retourner à l'accuiel --
            backToHomeCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                IsCheckCustomerVisible = Visibility.Visible;
                IsCustomerParkVisible  = Visibility.Collapsed;
                IsStolenMachineVisible = Visibility.Collapsed;
                isSendMailVisible      = Visibility.Collapsed;
            }));
            #endregion

            #region -- Commande qui permet de passer de la page des machines volées à celle du par machine --
            backToSimulationCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                IsCustomerParkVisible  = Visibility.Visible;
                IsStolenMachineVisible = Visibility.Collapsed;
            }));
            #endregion

            #region -- Commande qui permet d'aller sur la fenêtre d'administration --
            goToAdminCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                // -- Clear search string --
                SearchString = string.Empty;
                GetAdministration();
            }));
            #endregion

            #region -- Commande qui permet à l'admin d'aller rentrer à l'accueil --
            adminBackToHome = new DelegateCommand(new System.Action <object>((arg) =>
            {
                IsAdminVisible         = Visibility.Collapsed;
                IsCheckCustomerVisible = Visibility.Visible;
            }));
            #endregion

            #region -- Commande qui permet d'envoyer un email --
            sendByMailCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                if (!string.IsNullOrWhiteSpace(BcFileName) && !string.IsNullOrWhiteSpace(PvFileName) && !string.IsNullOrWhiteSpace(selectContact))
                {
                    Task.Run(() =>
                    {
                        // -- Display loading page --
                        IsLoadingWindowVisible = Visibility.Visible;

                        #region -- Export Data to Excel --
                        excelUtility = new ExcelUtlity();
                        // -- Convert Customer stolen tool to dataTable --
                        convertDataTable = ConvertToDataTable(CustomerStolenToolsList, new string[] { "Code_Article", "Designation", "Duree_Contrat", "Quantite", "Date_Debut_Contrat", "Serial" });

                        // -- Create temp path for our excel file --
                        excelFileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "ExcelData.xlsx");

                        // -- Define dynamic Excel report title --
                        string reportType = SelectedReportType == "Simulation du montant de la franchise à payer suite à un vol" ?
                                            "Liste des machines déclarées volées" : "Liste des machines déclarées perdues";

                        excelUtility.WriteDataTableToExcel(convertDataTable, excelFileName, "Customer Stolen Tools", reportType, AmountToBePaid, CustomerName, userMail);
                        #endregion

                        #region -- Send mail --
                        // -- Create template --
                        string template     = @"T:\MKI-SOFTWARE\Project\Simulateur de vol\Template\MailTemplate.htm";
                        string htmlTemplate = File.ReadAllText(template, System.Text.Encoding.Default);
                        htmlTemplate        = htmlTemplate.Replace("{A}", SelectedReportType);
                        htmlTemplate        = htmlTemplate.Replace("{B}", userLogin);
                        htmlTemplate        = htmlTemplate.Replace("{C}", CustomerName);
                        htmlTemplate        = htmlTemplate.Replace("{E}", Comments);

                        // -- Call Send mailfunction --
                        sendMail.SendMailToFleet(fleetEmail, excelFileName, Suject, userMail, "*****@*****.**", htmlTemplate, new string[] { PvFileName, BcFileName });
                        #endregion

                        #region -- Save Customer stolen tools in database --
                        // -- Set custom excel file name --
                        string fName = excelFileName.Substring(excelFileName.LastIndexOf('\\') + 1);

                        // -- Set send date --
                        DateTime receiptDate = DateTime.Now;

                        // Après avoir récupérer le code clt, la déisgnation, data debut, durée contrat, quantité, serial, custID, custName, daterecption, Amount to be paid, filename,

                        #endregion

                        #region -- Send to server --


                        #endregion -- http://stackoverflow.com/questions/34586733/sending-a-value-from-server-to-client-with-sockets --

                        // -- Clear form --
                        BcFileName = string.Empty;
                        PvFileName = string.Empty;
                        Comments   = string.Empty;
                        IsFormOk   = false;

                        DisplayMessage("Le dossier complet du client " + CustomerName + " a été envoyée au service fleet pour traitement.\n Vous avez également reçu une copie.");

                        // To do...
                        isSendMailVisible = Visibility.Collapsed;
                        // -- Display loading page --
                        IsLoadingWindowVisible = Visibility.Collapsed;
                        IsCheckCustomerVisible = Visibility.Visible;
                    });
                }
                else
                {
                    DisplayErrorMessage("Le bon de commande et le procès verbal sont obligatoires !");
                }
            }));
            #endregion

            #region -- Commande qui permet de valider la simulation --
            validateCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                listContacts.Clear();

                //// -- Populate local list --
                //foreach (Contact contact in ListOfContacts)
                //    listContacts.Add(contact.FullName);

                IsStolenMachineVisible = Visibility.Collapsed;
                isSendMailVisible      = Visibility.Visible;
            }));
            #endregion

            #region -- Commande qui permet de parcourir pour chercher un Bon de commande --
            broserBcCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                BroswerBcFileName();
            }));
            #endregion

            #region -- Commande qui permet de parcourir pour chercher un proces verbal --
            broserPvCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                BroswerPvFileName();
            }));
            #endregion

            #region -- Commande qui permet d'effectuer les recherches --
            adminSearchCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                if (string.IsNullOrWhiteSpace(SearchString))
                {
                    SimulationsList.Clear();
                    foreach (var item in History)
                    {
                        SimulationsList.Add(item);
                    }
                }
                else
                {
                    var uSearch = SearchString.ToUpper();

                    List <Historic> searchResults = History.Where(t =>
                                                                  t.Customer_ID.Contains(uSearch) ||
                                                                  t.Customer_Name.ToUpper().Contains(uSearch) ||
                                                                  t.DateReception.ToString("dd/MM/yyyy").Contains(uSearch)).ToList();

                    SimulationsList.Clear();
                    foreach (var item in searchResults)
                    {
                        SimulationsList.Add(item);
                    }
                }
            }));
            #endregion

            #region -- Commande qui permet aux TS d'effectuer les recherches --
            customerSearchCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                if (string.IsNullOrWhiteSpace(SearchString))
                {
                    CustomerParkList.Clear();
                    foreach (var item in machineList)
                    {
                        CustomerParkList.Add(item);
                    }
                    // -- Display Customer park list in CollectionViewSource --
                    MachinesView = CollectionViewSource.GetDefaultView(CustomerParkList);
                    // -- Clear collection view --
                    MachinesView.GroupDescriptions.Clear();
                    MachinesView.GroupDescriptions.Add(new PropertyGroupDescription("Designation"));
                }
                else
                {
                    var uSearch = SearchString.ToUpper();
                    List <Machine> searchResults = CustomerParkList.Where(t =>
                                                                          t.Code_Article.Contains(uSearch) ||
                                                                          t.Designation.ToUpper().Contains(uSearch) ||
                                                                          t.Serial.Contains(uSearch)).ToList();

                    CustomerParkList.Clear();
                    foreach (var item in searchResults)
                    {
                        CustomerParkList.Add(item);
                    }

                    // -- Display Customer park list in CollectionViewSource --
                    MachinesView = CollectionViewSource.GetDefaultView(CustomerParkList);
                    // -- Clear collection view --
                    MachinesView.GroupDescriptions.Clear();
                    MachinesView.GroupDescriptions.Add(new PropertyGroupDescription("Designation"));
                }
            }));
            #endregion

            #region -- Commande qui permet de passer de la page envoi du mail à celle qui resume et donne le montant dû --
            backToResume = new DelegateCommand(new System.Action <object>((arg) =>
            {
                // -- Manage window's visibility --
                isSendMailVisible = Visibility.Collapsed;
                IsCustomerStolensMachinesVisible = Visibility.Visible;
                IsStolenMachineVisible           = Visibility.Visible;

                // -- Clear form --
                BcFileName = string.Empty;
                PvFileName = string.Empty;
                Comments   = string.Empty;
                IsFormOk   = false;
            }));
            #endregion

            #region -- Admin Select customer machine in SimulationList --
            SelectedCommand = new DelegateCommand((x) =>
            {
                var val          = x as Historic;
                int idHistorique = val.SimulationId;

                // -- récupérer documents du serveur !!!!!! --
                Historic simulation = SimulationsList.Where(t => t.SimulationId.Equals(idHistorique)).FirstOrDefault();

                if (simulation.SimulationMachineList != null)                  // && simulation.SimulationMachineList != null
                {
                    convertDataTable = ConvertToDataTable(simulation.SimulationMachineList, new string[] { "Code_Article", "Designation", "Duree_Contrat", "Quantite", "Date_Debut_Contrat", "Serial" });

                    #region -- EXCEL --
                    excelUtility = new ExcelUtlity();

                    // -- Choose excel directory --
                    System.Windows.Forms.FolderBrowserDialog FBD = new System.Windows.Forms.FolderBrowserDialog();
                    FBD.Description         = "Choississez le dossier de destination ! ";
                    FBD.ShowNewFolderButton = false;
                    if (FBD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        //string f = FBD.SelectedPath;
                        excelFileName = Path.Combine(FBD.SelectedPath, "ExcelData.xlsx");

                        // -- Define dynamic Excel report title --
                        string reportType = "List de machines du client : " + simulation.Customer_Name;

                        Task.Run(() =>
                        {
                            // -- Show loading page --
                            IsLoadingWindowVisible = Visibility.Visible;
                            // -- Export la liste des machines de cette simulation au format excel --
                            excelUtility.WriteDataTableToExcel(convertDataTable, excelFileName, "Customer Tools", reportType, simulation.OffrePrix, simulation.Customer_Name, userMail);
                            DisplayMessage("La liste des machines de cette simulations a été exportée ici : " + excelFileName);
                            // -- Show loading page --
                            IsLoadingWindowVisible = Visibility.Collapsed;
                        });
                    }
                    #endregion
                }
            });
            #endregion

            #region -- Open send list to customer form --
            openSendToCustomerForm = new DelegateCommand((x) =>
            {
                // -- Clear search string --
                SearchString = string.Empty;

                // -- Manage visibility --
                IsSendSimulToCustomerVisible     = Visibility.Visible;
                IsCustomerStolensMachinesVisible = Visibility.Collapsed;

                //// Bruno !!
                //Task.Run(() =>
                //{
                //    // - Récupérer montant restant -
                //    // To do...
                //    IsLoadingWindowVisible = Visibility.Visible;
                //    //System.Threading.Thread.Sleep(3000);

                //    IsLoadingWindowVisible = Visibility.Collapsed;
                //    IsSendSimulToCustomerVisible = Visibility.Visible;
                //    IsCustomerStolensMachinesVisible = Visibility.Collapsed;
                //});
            });
            #endregion

            #region -- Commande qui permet de passer d'envoyer la liste des machine et le montant restant dû au client --
            sendToCustomerCommand = new DelegateCommand(new System.Action <object>((arg) =>
            {
                //--  --.
                pdfUtility = new PdfUtitlity();
                // -- Export PDf file and sent to custmer --
                convertDataTable = ConvertToDataTable(CustomerStolenToolsList, new string[] { "Code_Article", "Designation", "Serial", "Duree_Contrat" });

                // -- Send to customer --
                if (Regex.IsMatch(ContactEmail.Trim(), @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"))
                {
                    if (pdfUtility.ConvertToPDF(convertDataTable, userMail, CustomerName, SelectedReportType, AmountToBePaid))
                    {
                        Task.Run(() =>
                        {
                            #region -- Create template and send --
                            string template             = @"T:\MKI-SOFTWARE\Project\Simulateur de vol\Template\MailTemplate.htm";
                            string CustomerHtmlTemplate = File.ReadAllText(template, Encoding.Default);
                            CustomerHtmlTemplate        = CustomerHtmlTemplate.Replace("{A}", SelectedReportType);
                            CustomerHtmlTemplate        = CustomerHtmlTemplate.Replace("{B}", userLogin);
                            CustomerHtmlTemplate        = CustomerHtmlTemplate.Replace("{C}", CustomerName);
                            CustomerHtmlTemplate        = CustomerHtmlTemplate.Replace("{E}", CommentForCustomer);

                            string sujet   = "Simulation vous permettant d'établir un bon de commande.";
                            string pdfFile = AppDomain.CurrentDomain.BaseDirectory + "\\CustomerStolenMachines.pdf";

                            // -- Call send mail function --
                            sendMail.SendMailToCustomer(ContactEmail, pdfFile, sujet, userMail, userMail, CustomerHtmlTemplate);
                            #endregion

                            DisplayMessage("La liste des machines déclarées " + reportSelectType + "\n par le client : " + CustomerName + " lui a été envoyée !");

                            // -- Manage window's Visibility --
                            IsSendSimulToCustomerVisible     = Visibility.Collapsed;
                            IsCustomerStolensMachinesVisible = Visibility.Visible;

                            // -- Clear form --
                            ContactEmail       = string.Empty;
                            CommentForCustomer = string.Empty;
                            IsFormOk           = false;
                        });
                    }
                }
                else
                {
                    DisplayErrorMessage("Vous devez saisir une adresse email valide !");
                }
            }));
            #endregion

            #region -- Commande qui permet de passer de la page envoi du mail à celle qui resume et donne le montant dû --
            backStolenLMachines = new DelegateCommand(new Action <object>((arg) =>
            {
                IsCustomerStolensMachinesVisible = Visibility.Visible;
                IsSendSimulToCustomerVisible     = Visibility.Collapsed;

                // -- Clear form --
                ContactEmail       = string.Empty;
                CommentForCustomer = string.Empty;
                IsFormOk           = false;
            }));
            #endregion
        }
示例#2
0
        /// <summary>
        /// -- Check CustomerID and Display his park --
        /// </summary>
        public void GetCustomer()
        {
            if (!string.IsNullOrWhiteSpace(CustomerID))
            {
                Task.Run(() =>
                {
                    // -- Show loading page --
                    IsLoadingWindowVisible = Visibility.Visible;

                    var custData = server.GetCustomerData(CustomerID);
                    //if (custData.Customer_Name == null)
                    //    DisplayErrorMessage("Le client que vous avez saisi est inconnu !");
                    //else
                    //{
                    Presentation_Client = custData.Customer_Name + "   -   " + CustomerID;

                    // -- Set page title dynamicaly --
                    SelectedReportType = SelectedReportType == "Déclaration de vol" ? "Simulation du montant de la franchise à payer suite à un vol." :
                                         "Simulation du montant de la franchise à payer suite à une perte.";

                    // -- Clear Search form --
                    SearchString = string.Empty;

                    // -- Get Customer parck machine --
                    machineList = custData.MachineList;
                    if (machineList.Count() > 0)
                    {
                        // -- Clear Customer parck list --
                        CustomerParkList.Clear();

                        // - Populate local list -
                        foreach (Machine m in machineList)
                        {
                            Application.Current.Dispatcher.Invoke(new Action(() => CustomerParkList.Add(m)));
                        }

                        // -- Set pictures --
                        var materialsWithPicture = from machine in machineList
                                                   join materialPicture in custData.PictureList
                                                   on machine.Code_Article equals materialPicture.Material
                                                   select new
                        {
                            Machine = machine,
                            Picture = materialPicture.Picture
                        };

                        foreach (var item in materialsWithPicture)
                        {
                            item.Machine.Picture = item.Picture;
                        }

                        Application.Current.Dispatcher.Invoke(new Action(() =>
                        {
                            // -- Display Customer park list in CollectionViewSource --
                            MachinesView = CollectionViewSource.GetDefaultView(CustomerParkList);

                            // -- Clear collection view --
                            MachinesView.GroupDescriptions.Clear();
                            MachinesView.GroupDescriptions.Add(new PropertyGroupDescription("Designation"));
                        }));

                        // -- Update "AreToolsSelected flag" if IsStolen property change --
                        machineList.ForEach(x => x.IsStolenChanged += (s, e) =>
                        {
                            StolenMachineCount = CustomerParkList.Where(machine => machine.IsStolen == true).Count();
                            // -- Un outil est selectionné si le total des machines selectionnées est > 0 --
                            AreToolsSelected = StolenMachineCount > 0;
                        });

                        // -- Set Message on GridView Top --
                        FirstReport = SelectedReportType == "Déclaration de vol" ? "Cochez les machines concernées par le vol afin de simuler le montant de la franchise à payer." :
                                      "Cochez les machines concernées par la perte afin de simuler le montant de la franchise à payer.";
                        // --  --
                        ListOfContacts = custData.ContactList;

                        // -- Display Customer park window --
                        IsCustomerParkVisible  = Visibility.Visible;
                        IsCheckCustomerVisible = Visibility.Collapsed;
                    }
                    else
                    {
                        DisplayErrorMessage("Le client que vous avez saisi n'a pas de machine en fleet!");
                    }
                    //}
                    IsLoadingWindowVisible = Visibility.Collapsed;
                });
            }
            else
            {
                DisplayErrorMessage("Vous devez saisir un code client valide !");
            }
        }