public InputInvoiceDocumentResponse Create(InputInvoiceDocumentViewModel InputInvoiceDocument)
        {
            InputInvoiceDocumentResponse response = new InputInvoiceDocumentResponse();

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                SqliteCommand insertCommand = db.CreateCommand();
                insertCommand.CommandText = SqlCommandInsertPart;

                try
                {
                    insertCommand = AddCreateParameters(insertCommand, InputInvoiceDocument);
                    insertCommand.ExecuteNonQuery();
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage = error.Message;
                    response.Success        = false;
                    response.Message        = error.Message;
                    return(response);
                }
                db.Close();

                response.Success = true;
                return(response);
            }
        }
        private void BtnDelete_Click(object sender, RoutedEventArgs e)
        {
            var response = new InputInvoiceDocumentSQLiteRepository().SetStatusDeleted(CurrentInputInvoiceDocumentDG.Identifier);

            if (response.Success)
            {
                MainWindow.SuccessMessage = ((string)Application.Current.FindResource("Stavka_je_uspešno_obrisanaUzvičnik"));

                CurrentInputInvoiceDocumentForm            = new InputInvoiceDocumentViewModel();
                CurrentInputInvoiceDocumentForm.Identifier = Guid.NewGuid();
                CurrentInputInvoiceDocumentForm.ItemStatus = ItemStatus.Added;

                CurrentInputInvoiceDocumentDG = null;

                InputInvoiceCreatedUpdated();

                Thread displayThread = new Thread(() => DisplayInputInvoiceDocumentData());
                displayThread.IsBackground = true;
                displayThread.Start();
            }
            else
            {
                MainWindow.ErrorMessage = response.Message;
            }
        }
        private void btnEditDocument_Click(object sender, RoutedEventArgs e)
        {
            CurrentInputInvoiceDocumentForm            = new InputInvoiceDocumentViewModel();
            CurrentInputInvoiceDocumentForm.Identifier = CurrentInputInvoiceDocumentDG.Identifier;
            CurrentInputInvoiceDocumentForm.ItemStatus = ItemStatus.Edited;

            CurrentInputInvoiceDocumentForm.IsSynced   = CurrentInputInvoiceDocumentDG.IsSynced;
            CurrentInputInvoiceDocumentForm.Name       = CurrentInputInvoiceDocumentDG.Name;
            CurrentInputInvoiceDocumentForm.CreateDate = CurrentInputInvoiceDocumentDG.CreateDate;
            CurrentInputInvoiceDocumentForm.Path       = CurrentInputInvoiceDocumentDG.Path;
            CurrentInputInvoiceDocumentForm.UpdatedAt  = CurrentInputInvoiceDocumentDG.UpdatedAt;
        }
        private static InputInvoiceDocumentViewModel Read(SqliteDataReader query)
        {
            int counter = 0;
            InputInvoiceDocumentViewModel dbEntry = new InputInvoiceDocumentViewModel();

            dbEntry.Id           = SQLiteHelper.GetInt(query, ref counter);
            dbEntry.Identifier   = SQLiteHelper.GetGuid(query, ref counter);
            dbEntry.InputInvoice = SQLiteHelper.GetInputInvoice(query, ref counter);
            dbEntry.Name         = SQLiteHelper.GetString(query, ref counter);
            dbEntry.CreateDate   = SQLiteHelper.GetDateTime(query, ref counter);
            dbEntry.Path         = SQLiteHelper.GetString(query, ref counter);
            dbEntry.ItemStatus   = SQLiteHelper.GetInt(query, ref counter);
            dbEntry.IsSynced     = SQLiteHelper.GetBoolean(query, ref counter);
            dbEntry.UpdatedAt    = SQLiteHelper.GetDateTime(query, ref counter);
            dbEntry.CreatedBy    = SQLiteHelper.GetCreatedBy(query, ref counter);
            dbEntry.Company      = SQLiteHelper.GetCompany(query, ref counter);
            return(dbEntry);
        }
        public static InputInvoiceDocumentViewModel ConvertToInputInvoiceDocumentViewModelLite(this InputInvoiceDocument inputInvoiceDocument)
        {
            InputInvoiceDocumentViewModel InputInvoiceDocumentViewModel = new InputInvoiceDocumentViewModel()
            {
                Id         = inputInvoiceDocument.Id,
                Identifier = inputInvoiceDocument.Identifier,

                Name       = inputInvoiceDocument.Name,
                CreateDate = inputInvoiceDocument.CreateDate,
                Path       = inputInvoiceDocument.Path,
                ItemStatus = inputInvoiceDocument.ItemStatus,
                IsActive   = inputInvoiceDocument.Active,

                UpdatedAt = inputInvoiceDocument.UpdatedAt,
                CreatedAt = inputInvoiceDocument.CreatedAt
            };

            return(InputInvoiceDocumentViewModel);
        }
        public InputInvoiceDocumentListResponse GetInputInvoiceDocumentsByInputInvoice(int companyId, Guid InputInvoiceIdentifier)
        {
            InputInvoiceDocumentListResponse     response = new InputInvoiceDocumentListResponse();
            List <InputInvoiceDocumentViewModel> InputInvoiceDocuments = new List <InputInvoiceDocumentViewModel>();

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                try
                {
                    SqliteCommand selectCommand = new SqliteCommand(
                        SqlCommandSelectPart +
                        "FROM InputInvoiceDocuments " +
                        "WHERE InputInvoiceIdentifier = @InputInvoiceIdentifier " +
                        "AND CompanyId = @CompanyId " +
                        "ORDER BY IsSynced, Id DESC;", db);

                    selectCommand.Parameters.AddWithValue("@InputInvoiceIdentifier", InputInvoiceIdentifier);
                    selectCommand.Parameters.AddWithValue("@CompanyId", companyId);

                    SqliteDataReader query = selectCommand.ExecuteReader();

                    while (query.Read())
                    {
                        InputInvoiceDocumentViewModel dbEntry = Read(query);
                        InputInvoiceDocuments.Add(dbEntry);
                    }
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage        = error.Message;
                    response.Success               = false;
                    response.Message               = error.Message;
                    response.InputInvoiceDocuments = new List <InputInvoiceDocumentViewModel>();
                    return(response);
                }
                db.Close();
            }
            response.Success = true;
            response.InputInvoiceDocuments = InputInvoiceDocuments;
            return(response);
        }
        private SqliteCommand AddCreateParameters(SqliteCommand insertCommand, InputInvoiceDocumentViewModel InputInvoiceDocument)
        {
            insertCommand.Parameters.AddWithValue("@ServerId", InputInvoiceDocument.Id);
            insertCommand.Parameters.AddWithValue("@Identifier", InputInvoiceDocument.Identifier);
            insertCommand.Parameters.AddWithValue("@InputInvoiceId", ((object)InputInvoiceDocument.InputInvoice.Id) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@InputInvoiceIdentifier", ((object)InputInvoiceDocument.InputInvoice.Identifier) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@InputInvoiceCode", ((object)InputInvoiceDocument.InputInvoice.Code) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@Name", ((object)InputInvoiceDocument.Name) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@CreateDate", ((object)InputInvoiceDocument.CreateDate) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@Path", ((object)InputInvoiceDocument.Path) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@ItemStatus", ((object)InputInvoiceDocument.ItemStatus) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@IsSynced", InputInvoiceDocument.IsSynced);
            insertCommand.Parameters.AddWithValue("@UpdatedAt", ((object)InputInvoiceDocument.UpdatedAt) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@CreatedById", MainWindow.CurrentUser.Id);
            insertCommand.Parameters.AddWithValue("@CreatedByName", MainWindow.CurrentUser.FirstName + " " + MainWindow.CurrentUser.LastName);
            insertCommand.Parameters.AddWithValue("@CompanyId", MainWindow.CurrentCompany.Id);
            insertCommand.Parameters.AddWithValue("@CompanyName", MainWindow.CurrentCompany.CompanyName);

            return(insertCommand);
        }
        public InputInvoice_Document_AddEdit(InputInvoiceViewModel inputInvoice)
        {
            inputInvoiceService         = DependencyResolver.Kernel.Get <IInputInvoiceService>();
            inputInvoiceDocumentService = DependencyResolver.Kernel.Get <IInputInvoiceDocumentService>();

            InitializeComponent();

            this.DataContext = this;

            CurrentInputInvoice                        = inputInvoice;
            CurrentInputInvoiceDocumentForm            = new InputInvoiceDocumentViewModel();
            CurrentInputInvoiceDocumentForm.Identifier = Guid.NewGuid();
            CurrentInputInvoiceDocumentForm.ItemStatus = ItemStatus.Added;

            Thread displayThread = new Thread(() => DisplayInputInvoiceDocumentData());

            displayThread.IsBackground = true;
            displayThread.Start();

            btnAddDocument.Focus();
        }
        public InputInvoiceDocumentResponse GetInputInvoiceDocument(Guid identifier)
        {
            InputInvoiceDocumentResponse  response             = new InputInvoiceDocumentResponse();
            InputInvoiceDocumentViewModel InputInvoiceDocument = new InputInvoiceDocumentViewModel();

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                try
                {
                    SqliteCommand selectCommand = new SqliteCommand(
                        SqlCommandSelectPart +
                        "FROM InputInvoiceDocuments " +
                        "WHERE Identifier = @Identifier;", db);
                    selectCommand.Parameters.AddWithValue("@Identifier", identifier);

                    SqliteDataReader query = selectCommand.ExecuteReader();

                    if (query.Read())
                    {
                        InputInvoiceDocumentViewModel dbEntry = Read(query);
                        InputInvoiceDocument = dbEntry;
                    }
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage       = error.Message;
                    response.Success              = false;
                    response.Message              = error.Message;
                    response.InputInvoiceDocument = new InputInvoiceDocumentViewModel();
                    return(response);
                }
                db.Close();
            }
            response.Success = true;
            response.InputInvoiceDocument = InputInvoiceDocument;
            return(response);
        }
        public static InputInvoiceDocument ConvertToInputInvoiceDocument(this InputInvoiceDocumentViewModel inputInvoiceDocumentViewModel)
        {
            InputInvoiceDocument InputInvoiceDocument = new InputInvoiceDocument()
            {
                Id         = inputInvoiceDocumentViewModel.Id,
                Identifier = inputInvoiceDocumentViewModel.Identifier,

                InputInvoiceId = inputInvoiceDocumentViewModel.InputInvoice?.Id ?? null,

                Name       = inputInvoiceDocumentViewModel.Name,
                CreateDate = inputInvoiceDocumentViewModel.CreateDate,
                Path       = inputInvoiceDocumentViewModel.Path,
                ItemStatus = inputInvoiceDocumentViewModel.ItemStatus,
                Active     = inputInvoiceDocumentViewModel.IsActive,

                CreatedById = inputInvoiceDocumentViewModel.CreatedBy?.Id ?? null,
                CompanyId   = inputInvoiceDocumentViewModel.Company?.Id ?? null,

                CreatedAt = inputInvoiceDocumentViewModel.CreatedAt,
                UpdatedAt = inputInvoiceDocumentViewModel.UpdatedAt
            };

            return(InputInvoiceDocument);
        }
 private void btnCancelDocument_Click(object sender, RoutedEventArgs e)
 {
     CurrentInputInvoiceDocumentForm            = new InputInvoiceDocumentViewModel();
     CurrentInputInvoiceDocumentForm.Identifier = Guid.NewGuid();
     CurrentInputInvoiceDocumentForm.ItemStatus = ItemStatus.Added;
 }
        private void btnAddDocument_Click(object sender, RoutedEventArgs e)
        {
            #region Validation

            if (CurrentInputInvoiceDocumentForm.Name == null)
            {
                MainWindow.ErrorMessage = ((string)Application.Current.FindResource("Obavezno_poljeDvotačka_Naziv"));
                return;
            }

            #endregion

            Thread th = new Thread(() =>
            {
                SubmitButtonEnabled = false;


                CurrentInputInvoiceDocumentForm.InputInvoice = CurrentInputInvoice;


                CurrentInputInvoiceDocumentForm.Company = new CompanyViewModel()
                {
                    Id = MainWindow.CurrentCompanyId
                };
                CurrentInputInvoiceDocumentForm.CreatedBy = new UserViewModel()
                {
                    Id = MainWindow.CurrentUserId
                };

                new InputInvoiceDocumentSQLiteRepository().Delete(CurrentInputInvoiceDocumentForm.Identifier);
                var response = new InputInvoiceDocumentSQLiteRepository().Create(CurrentInputInvoiceDocumentForm);
                if (!response.Success)
                {
                    MainWindow.ErrorMessage = response.Message;

                    CurrentInputInvoiceDocumentForm            = new InputInvoiceDocumentViewModel();
                    CurrentInputInvoiceDocumentForm.Identifier = Guid.NewGuid();
                    CurrentInputInvoiceDocumentForm.ItemStatus = ItemStatus.Added;
                    CurrentInputInvoiceDocumentForm.IsSynced   = false;
                    return;
                }

                CurrentInputInvoiceDocumentForm            = new InputInvoiceDocumentViewModel();
                CurrentInputInvoiceDocumentForm.Identifier = Guid.NewGuid();
                CurrentInputInvoiceDocumentForm.ItemStatus = ItemStatus.Added;
                CurrentInputInvoiceDocumentForm.IsSynced   = false;
                InputInvoiceCreatedUpdated();

                DisplayInputInvoiceDocumentData();

                Application.Current.Dispatcher.BeginInvoke(
                    System.Windows.Threading.DispatcherPriority.Normal,
                    new Action(() =>
                {
                    txtDocumentName.Focus();
                })
                    );

                SubmitButtonEnabled = true;
            });
            th.IsBackground = true;
            th.Start();
        }