using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Data.OleDb; using System.Data; using Mercat_1.Empreses; using Mercat_1.PdfCreator; using System.Diagnostics; namespace Mercat_1 { /// /// Lógica de interacción para Window1.xaml /// public partial class Window1 : Window { #region ViewModel sealed class ViewModel : INotifyPropertyChanged { #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; void SetField(ref X field, X value, [CallerMemberName] string propertyName = null) { if (EqualityComparer.Default.Equals(field, value)) return; field = value; var h = PropertyChanged; if (h != null) h(this, new PropertyChangedEventArgs(propertyName)); } #endregion // Autocombobox Default settings //public IReadOnlyList Items //{ // get { return PersonModule.All; } //} Empresa selectedItem; public Empresa SelectedItem { get { return selectedItem; } set { SetField(ref selectedItem, value); } } long? selectedValue; public long? SelectedValue { get { return selectedValue; } set { SetField(ref selectedValue, value); } } } #endregion public Window1() { InitializeComponent(); if (!FillComboBox()) { DialogResult = false; } } #region Fillcombobox public bool FillComboBox() { bool success = true; try { DataTable dt = new DataTable(); using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\source\\Mercat-1\\Mercatflor.accdb;Persist Security Info=True")) { using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM empreses", connection)) { da.Fill(dt); } } //select new Empresa(Convert.ToUInt32(dr["Id"]), dr["Empresa"].ToString())).ToList(); IReadOnlyList empresesList = (from DataRow dr in dt.Rows select new Empresa(Convert.ToUInt32(dr["Id"]), Convert.ToUInt32(dr["numClient"]), dr["Empresa"].ToString())).ToList(); llistaEmpreses.ItemsSource = empresesList; } catch (System.Data.OleDb.OleDbException oleError) { DisplayOleDbErrorCollection(oleError); success = false; } catch (Exception ex) { MessageBox.Show(string.Format("{0} Exception caught.", ex), "ERROR"); success = false; } return success; } public void DisplayOleDbErrorCollection(OleDbException exception) { for (int i = 0; i < exception.Errors.Count; i++) { MessageBox.Show("Index #" + i + "\n" + "Message: " + exception.Errors[i].Message + "\n" + "Native: " + exception.Errors[i].NativeError.ToString() + "\n" + "Source: " + exception.Errors[i].Source + "\n" + "SQL: " + exception.Errors[i].SQLState + "\n"); } } #endregion public Thickness DocumentMargin { get { return (Thickness)DataContext; } set { DataContext = value; } } private void cancelButton_Click(object sender, RoutedEventArgs e) { // Dialog box canceled DialogResult = false; } private void okButton_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(llistaEmpreses.Text.ToString())) { MessageBox.Show("El nombre de empresa esta vacio o no es correcto", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error); } bool saveresult = SaveDatatoDB(); MypdfApp rere = new MypdfApp(); SendToPrinter(); string myMsg = "Combobox.Text: " + llistaEmpreses.Text + "\n" + string.Format("SelectedItem: {0} \n SelectedValue: {1}",llistaEmpreses.SelectedItem, llistaEmpreses.SelectedValue); MessageBoxResult result = MessageBox.Show(myMsg, "Resultados", MessageBoxButton.YesNoCancel); // Dialog box accepted //DialogResult = true; } private void SendToPrinter() { ProcessStartInfo info = new ProcessStartInfo(); info.Verb = "print"; info.FileName = @"E:\\source\\Mercat-1\\demo.pdf"; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process p = new Process(); p.StartInfo = info; p.Start(); p.WaitForInputIdle(); System.Threading.Thread.Sleep(3000); if (false == p.CloseMainWindow()) p.Kill(); } #region SaveFormData private bool SaveDatatoDB() { bool success = true; /* * llistaempreses - Combobox amb el nom de l'empresa * data - Data de l'operació * entrada_dc / sortida_dc - Entrades i sortides de carros DC * entrada_cc / sortida_cc - Entrades i sortides de carros CC+ * entrada_tag5 / sortida_tag5 - Entrades i sortides de carros Tag5 * entrada_safates / sortida_safates - Entrades i sortides de Safates * entrada_alsacurta / sortida_alsacurta - Entrades i sortides de alces curtes * entrada_alsallarga / sortida_alsallarga - Entrades i sortides de alces llargues * Observacions - observacions de l'entrada */ try { using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\\source\\Mercat-1\\Mercatflor.accdb;Persist Security Info=True")) { // Insertamos los datos del formulario en la tabla 'moviments' de la base de datos connection.Open(); string queryInsertMovement = "INSERT INTO moviments (data, numClient, entrada_dc, entrada_cc, entrada_tag5, entrada_safates, entrada_alsacurta, entrada_alsallarga, observacions, sortida_dc, sortida_cc, sortida_tag5, sortida_safates, sortida_alsacurta, sortida_alsallarga)" + " VALUES (@Data, '" + llistaEmpreses.SelectedValue.ToString() + "'," + entrada_dc.Text.ToString() + "," + entrada_cc.Text.ToString() + "," + entrada_tag5.Text.ToString() + "," + entrada_safates.Text.ToString() + "," + entrada_alsacurta.Text.ToString() + "," + entrada_alsallarga.Text.ToString() + ",'" + Observacions.Text.ToString() + "'," + sortida_dc.Text.ToString() + "," + sortida_cc.Text.ToString() + "," + sortida_tag5.Text.ToString() + "," + sortida_safates.Text.ToString() + "," + sortida_alsacurta.Text.ToString() + "," + sortida_alsallarga.Text.ToString() + ")"; using (OleDbCommand cmd = new OleDbCommand(queryInsertMovement, connection)) { cmd.Parameters.Add("@Data", OleDbType.Date).Value = data.SelectedDate.Value.Date; try { cmd.ExecuteNonQuery(); } catch (InvalidOperationException inv) { MessageBox.Show(string.Format("{0} ", inv), "ERROR"); } } // Buscamos en la tabla 'sumatori' si el cliente tiene registros bool hasRecords = false; bool canContinue = true; int dbId = 0; Int64 dbNumClient = (Int64)llistaEmpreses.SelectedValue; int dbTotalDC = Int32.Parse(entrada_dc.Text) - Int32.Parse(sortida_dc.Text); int dbTotalCC = Int32.Parse(entrada_cc.Text) - Int32.Parse(sortida_cc.Text); int dbTotalTag = Int32.Parse(entrada_tag5.Text) - Int32.Parse(sortida_tag5.Text); int dbTotalSafates = Int32.Parse(entrada_safates.Text) - Int32.Parse(sortida_safates.Text); int dbTotalAlsaCurta = Int32.Parse(entrada_alsacurta.Text) - Int32.Parse(sortida_alsacurta.Text); int dbTotalAlsaLlarga = Int32.Parse(entrada_alsallarga.Text) - Int32.Parse(sortida_alsallarga.Text); string dbObservacions = string.Empty; DateTime dbDataActualit; string finalSqlQuery = string.Empty; string queryBuscarCliente = string.Format("SELECT * FROM sumatori WHERE numClient = {0}", llistaEmpreses.SelectedValue); using (OleDbDataAdapter da = new OleDbDataAdapter(queryBuscarCliente, connection)) { try { DataTable dt = new DataTable(); da.Fill(dt); if (dt != null) { foreach (DataRow dr in dt.Rows) { dbId = dr.Field("Id"); dbNumClient = dr.Field("numClient"); dbDataActualit = dr.Field("data_actualitzacio"); dbTotalDC += dr.Field("total_dc"); dbTotalCC += dr.Field("total_cc"); dbTotalTag += dr.Field("total_tag5"); dbTotalSafates += dr.Field("total_safates"); dbTotalAlsaCurta += dr.Field("total_alsacurta"); dbTotalAlsaLlarga += dr.Field("total_alsallarga"); dbObservacions = dr.Field("observacions"); hasRecords = true; //break; } } else { canContinue = false; } } catch (InvalidOperationException inv) { MessageBox.Show(string.Format("{0} ", inv), "ERROR"); canContinue = false; } } if (canContinue) { dbDataActualit = DateTime.Now; // si Observacions.text.lenght == 0 llavors "" sino afegim if (Observacions.Text.Length > 0) { dbObservacions += dbDataActualit.ToString() + " -> " + Observacions.Text + "\n"; }; if (hasRecords) { // Update records //dbObservacions += dbDataActualit.ToString() + " -> " + Observacions.Text + "\n"; finalSqlQuery = "UPDATE sumatori SET data_actualitzacio = '" + dbDataActualit.ToString() + "', total_dc = " + dbTotalDC.ToString() + ", total_cc = " + dbTotalCC.ToString() + ", total_tag5 = " + dbTotalTag.ToString() + ", total_safates = " + dbTotalSafates.ToString() + ", total_alsacurta = " + dbTotalAlsaCurta.ToString() + ", total_alsallarga = " + dbTotalAlsaLlarga.ToString() + ",observacions = '" + dbObservacions + "' WHERE numClient = " + llistaEmpreses.SelectedValue.ToString(); } else { // Insert records //dbObservacions = dbDataActualit.ToString() + " -> " + Observacions.Text + "\n"; finalSqlQuery = "INSERT INTO sumatori (numClient, data_actualitzacio, total_dc, total_cc, total_tag5, total_safates, total_alsacurta, total_alsallarga, observacions)" + " VALUES ('" + llistaEmpreses.SelectedValue.ToString() + "','" + dbDataActualit.ToString() + "'," + dbTotalDC.ToString() + "," + dbTotalCC.ToString() + "," + dbTotalTag.ToString() + "," + dbTotalSafates.ToString() + "," + dbTotalAlsaCurta.ToString() + "," + dbTotalAlsaLlarga.ToString() + ",'" + dbObservacions + "')"; } using (OleDbCommand cmd = new OleDbCommand(finalSqlQuery, connection)) { //cmd.Parameters.Add("@Data", OleDbType.Date).Value = dbDataActualit.ToString(); try { cmd.ExecuteNonQuery(); } catch (InvalidOperationException inv) { MessageBox.Show(string.Format("{0} ", inv), "ERROR"); } } } else { // ERROR MessageBoxResult result = MessageBox.Show("Ha ocurrido un error mientras se obtenia datos de la base de datos.", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error ); success = false; } // connection.Close(); } } catch (System.Data.OleDb.OleDbException oleError) { DisplayOleDbErrorCollection(oleError); success = false; } catch (Exception ex) { MessageBox.Show(string.Format("{0} Exception caught.", ex), "ERROR"); success = false; } return success; } #endregion } }