private void updateEmail(object sender, RoutedEventArgs e)
        {
            if (null == foundPerson.SelectedItem)
            {
                return;
            }

            VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person> service = new VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person>();

            VerificacionComprobantes.Model.Person person = service.Query(LiteDB.Query.EQ("Name", ((ListBoxItem)foundPerson.SelectedItem).Content.ToString()), "personas").First();

            if (string.IsNullOrEmpty(person.Email) || !person.Email.Equals(userEmail.Text))
            {
                person.Email = userEmail.Text;
                service.Update(person);
                SelectPerson(sender, null);
            }
        }
        void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            string userName = "";

            this.Dispatcher.Invoke(() => {
                sendEmailButton.IsEnabled = false;

                ListBoxItem selected = null;

                selected = (ListBoxItem)foundPerson.SelectedItem;

                userName       = selected == null ? null : selected.Content.ToString();
                userEmail.Text = "";
            });

            if (null == userName)
            {
                return;
            }

            string tempBox = "";

            VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person> service = new VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person>();

            VerificacionComprobantes.Model.Person person = service.Query(LiteDB.Query.EQ("Name", userName), "personas").First();
            var index = 0;

            foreach (VerificacionComprobantes.Model.Operation operation in person.Operations)
            {
                (sender as BackgroundWorker).ReportProgress((++index * 100) / person.Operations.Count);

                tempBox += (operation.Entity + " " + operation.FacturationDate + " ");
                tempBox += (operation.OperationNumber + " $" + operation.Total);

                if (!string.IsNullOrEmpty(operation.Voucher))
                {
                    tempBox += (" " + operation.Voucher);
                }
                else if (!string.IsNullOrEmpty(person.Email))
                {
                    this.Dispatcher.Invoke(() =>
                    {
                        userEmail.Text            = person.Email;
                        sendEmailButton.IsEnabled = true;
                    });
                }

                tempBox += (Environment.NewLine);
            }

            this.Dispatcher.Invoke(() =>
            {
                comprobantes.AppendText(tempBox);
            });

            (sender as BackgroundWorker).ReportProgress(0);
        }
        private void sendEmail(object sender, RoutedEventArgs e)
        {
            VerificacionComprobantes.Service.ConfigurationServer configServer         = VerificacionComprobantes.Service.ConfigurationServer.Instance;
            VerificacionComprobantes.Service.ConfigurationServer.Configuration config = configServer.getConfiguration();

            if (string.IsNullOrEmpty(config.Email.Server))
            {
                //logger.Buffer.Text += "No esta configurado el servidor de emails\n";
                return;
            }
            VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person> service = new VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person>();

            VerificacionComprobantes.Model.Person person = service.Query(LiteDB.Query.EQ("Name", ((ListBoxItem)foundPerson.SelectedItem).Content.ToString()), "personas").First();

            if (person == null)
            {
                return;
            }

            System.Globalization.TextInfo textInfo = new System.Globalization.CultureInfo("es-AR", false).TextInfo;

            var html = new HtmlAgilityPack.HtmlDocument();

            html.Load(@templateChooser.Text);

            var document = html.DocumentNode;

            document.QuerySelector("#nombre").InnerHtml = textInfo.ToTitleCase(person.Name);

            foreach (VerificacionComprobantes.Model.Operation operation in person.Operations)
            {
                if (string.IsNullOrEmpty(operation.Voucher))
                {
                    var row  = HtmlAgilityPack.HtmlNode.CreateNode("<tr>");
                    var cell = HtmlAgilityPack.HtmlNode.CreateNode("<td style='border: 1px solid #ddd; padding: 8px;'>");

                    cell.InnerHtml = operation.FacturationDate;
                    row.AppendChild(cell);

                    cell = HtmlAgilityPack.HtmlNode.CreateNode("<td style='border: 1px solid #ddd; padding: 8px;'>");

                    cell.InnerHtml = operation.Total;
                    row.AppendChild(cell);

                    cell = HtmlAgilityPack.HtmlNode.CreateNode("<td style='border: 1px solid #ddd; padding: 8px;'>");

                    cell.InnerHtml = operation.Entity;

                    row.AppendChild(cell);

                    document.QuerySelector("#pendientes").AppendChild(row);
                }
            }

            document.QuerySelector("#firmante").InnerHtml = remitente.Text;

            VerificacionComprobantes.Service.EmailServer server = new VerificacionComprobantes.Service.EmailServer();

            server.Send("*****@*****.**", ccEmails.Text,
                        config.Email.Header, html.DocumentNode.OuterHtml);
        }
        private void SearchAction(object sender, RoutedEventArgs e)
        {
            comprobantes.Document.Blocks.Clear();
            foundPerson.UnselectAll();
            foundPerson.Items.Clear();

            VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person> service = new VerificacionComprobantes.Service.StorageService <VerificacionComprobantes.Model.Person>();

            foreach (VerificacionComprobantes.Model.Person person in service.Query(LiteDB.Query.StartsWith("Name", search.Text), "personas"))
            {
                ListBoxItem item = new ListBoxItem();
                item.Content = person.Name;

                foundPerson.Items.Add(item);
            }
        }