public PhonebookNoteResponse Create(PhonebookNoteViewModel PhonebookNote)
        {
            PhonebookNoteResponse response = new PhonebookNoteResponse();

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

                try
                {
                    insertCommand = AddCreateParameters(insertCommand, PhonebookNote);
                    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 PhonebookNoteSQLiteRepository().SetStatusDeleted(CurrentPhonebookNoteDG.Identifier);

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

                CurrentPhonebookNoteForm            = new PhonebookNoteViewModel();
                CurrentPhonebookNoteForm.Identifier = Guid.NewGuid();
                CurrentPhonebookNoteForm.ItemStatus = ItemStatus.Added;

                CurrentPhonebookNoteDG = null;

                PhonebookCreatedUpdated();

                Thread displayThread = new Thread(() => DisplayPhonebookNoteData());
                displayThread.IsBackground = true;
                displayThread.Start();
            }
            else
            {
                MainWindow.ErrorMessage = response.Message;
            }
        }
        private void btnEditNote_Click(object sender, RoutedEventArgs e)
        {
            CurrentPhonebookNoteForm            = new PhonebookNoteViewModel();
            CurrentPhonebookNoteForm.Identifier = CurrentPhonebookNoteDG.Identifier;
            CurrentPhonebookNoteForm.ItemStatus = ItemStatus.Edited;

            CurrentPhonebookNoteForm.IsSynced  = CurrentPhonebookNoteDG.IsSynced;
            CurrentPhonebookNoteForm.Note      = CurrentPhonebookNoteDG.Note;
            CurrentPhonebookNoteForm.NoteDate  = CurrentPhonebookNoteDG.NoteDate;
            CurrentPhonebookNoteForm.UpdatedAt = CurrentPhonebookNoteDG.UpdatedAt;
        }
        private static PhonebookNoteViewModel Read(SqliteDataReader query)
        {
            int counter = 0;
            PhonebookNoteViewModel dbEntry = new PhonebookNoteViewModel();

            dbEntry.Id         = SQLiteHelper.GetInt(query, ref counter);
            dbEntry.Identifier = SQLiteHelper.GetGuid(query, ref counter);
            dbEntry.Phonebook  = SQLiteHelper.GetPhonebook(query, ref counter);
            dbEntry.Note       = SQLiteHelper.GetString(query, ref counter);
            dbEntry.NoteDate   = SQLiteHelper.GetDateTime(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 PhonebookNoteViewModel ConvertToPhonebookNoteViewModelLite(this PhonebookNote PhonebookNote)
        {
            PhonebookNoteViewModel PhonebookNoteViewModel = new PhonebookNoteViewModel()
            {
                Id         = PhonebookNote.Id,
                Identifier = PhonebookNote.Identifier,

                Note     = PhonebookNote.Note,
                NoteDate = PhonebookNote.NoteDate,

                ItemStatus = PhonebookNote.ItemStatus,
                IsActive   = PhonebookNote.Active,

                UpdatedAt = PhonebookNote.UpdatedAt,
                CreatedAt = PhonebookNote.CreatedAt,
            };

            return(PhonebookNoteViewModel);
        }
        public PhonebookNoteListResponse GetPhonebookNotesByPhonebook(int companyId, Guid PhonebookIdentifier)
        {
            PhonebookNoteListResponse     response       = new PhonebookNoteListResponse();
            List <PhonebookNoteViewModel> PhonebookNotes = new List <PhonebookNoteViewModel>();

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

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

                    SqliteDataReader query = selectCommand.ExecuteReader();

                    while (query.Read())
                    {
                        PhonebookNoteViewModel dbEntry = Read(query);
                        PhonebookNotes.Add(dbEntry);
                    }
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage = error.Message;
                    response.Success        = false;
                    response.Message        = error.Message;
                    response.PhonebookNotes = new List <PhonebookNoteViewModel>();
                    return(response);
                }
                db.Close();
            }
            response.Success        = true;
            response.PhonebookNotes = PhonebookNotes;
            return(response);
        }
        private SqliteCommand AddCreateParameters(SqliteCommand insertCommand, PhonebookNoteViewModel PhonebookNote)
        {
            insertCommand.Parameters.AddWithValue("@ServerId", PhonebookNote.Id);
            insertCommand.Parameters.AddWithValue("@Identifier", PhonebookNote.Identifier);
            insertCommand.Parameters.AddWithValue("@PhonebookId", ((object)PhonebookNote.Phonebook.Id) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@PhonebookIdentifier", ((object)PhonebookNote.Phonebook.Identifier) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@PhonebookCode", ((object)PhonebookNote.Phonebook.Code) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@PhonebookName", ((object)PhonebookNote.Phonebook.Name) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@Note", ((object)PhonebookNote.Note) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@NoteDate", ((object)PhonebookNote.NoteDate) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@ItemStatus", ((object)PhonebookNote.ItemStatus) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@IsSynced", PhonebookNote.IsSynced);
            insertCommand.Parameters.AddWithValue("@UpdatedAt", ((object)PhonebookNote.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 Phonebook_Note_AddEdit(PhonebookViewModel Phonebook)
        {
            PhonebookService     = DependencyResolver.Kernel.Get <IPhonebookService>();
            PhonebookNoteService = DependencyResolver.Kernel.Get <IPhonebookNoteService>();

            InitializeComponent();

            this.DataContext = this;

            CurrentPhonebook                    = Phonebook;
            CurrentPhonebookNoteForm            = new PhonebookNoteViewModel();
            CurrentPhonebookNoteForm.Identifier = Guid.NewGuid();
            CurrentPhonebookNoteForm.ItemStatus = ItemStatus.Added;

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

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

            btnAddNote.Focus();
        }
        public PhonebookNoteResponse GetPhonebookNote(Guid identifier)
        {
            PhonebookNoteResponse  response      = new PhonebookNoteResponse();
            PhonebookNoteViewModel PhonebookNote = new PhonebookNoteViewModel();

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

                    SqliteDataReader query = selectCommand.ExecuteReader();

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

                PhonebookId = PhonebookNoteViewModel.Phonebook?.Id ?? null,

                Note     = PhonebookNoteViewModel.Note,
                NoteDate = PhonebookNoteViewModel.NoteDate,

                ItemStatus  = PhonebookNoteViewModel.ItemStatus,
                Active      = PhonebookNoteViewModel.IsActive,
                CreatedById = PhonebookNoteViewModel.CreatedBy?.Id ?? null,
                CompanyId   = PhonebookNoteViewModel.Company?.Id ?? null,

                UpdatedAt = PhonebookNoteViewModel.UpdatedAt,
                CreatedAt = PhonebookNoteViewModel.CreatedAt,
            };

            return(PhonebookNote);
        }
        public static PhonebookNoteViewModel ConvertToPhonebookNoteViewModel(this PhonebookNote PhonebookNote)
        {
            PhonebookNoteViewModel PhonebookNoteViewModel = new PhonebookNoteViewModel()
            {
                Id         = PhonebookNote.Id,
                Identifier = PhonebookNote.Identifier,

                Phonebook = PhonebookNote.Phonebook?.ConvertToPhonebookViewModelLite(),

                Note     = PhonebookNote.Note,
                NoteDate = PhonebookNote.NoteDate,

                ItemStatus = PhonebookNote.ItemStatus,
                IsActive   = PhonebookNote.Active,

                CreatedBy = PhonebookNote.CreatedBy?.ConvertToUserViewModelLite(),
                Company   = PhonebookNote.Company?.ConvertToCompanyViewModelLite(),

                UpdatedAt = PhonebookNote.UpdatedAt,
                CreatedAt = PhonebookNote.CreatedAt,
            };

            return(PhonebookNoteViewModel);
        }
 private void btnCancelNote_Click(object sender, RoutedEventArgs e)
 {
     CurrentPhonebookNoteForm            = new PhonebookNoteViewModel();
     CurrentPhonebookNoteForm.Identifier = Guid.NewGuid();
     CurrentPhonebookNoteForm.ItemStatus = ItemStatus.Added;
 }
        private void btnAddNote_Click(object sender, RoutedEventArgs e)
        {
            #region Validation

            if (CurrentPhonebookNoteForm.Note == null)
            {
                MainWindow.ErrorMessage = ((string)Application.Current.FindResource("Obavezno_poljeDvotačka_Napomena"));
                return;
            }

            #endregion

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


                CurrentPhonebookNoteForm.Phonebook = CurrentPhonebook;


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

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

                    CurrentPhonebookNoteForm            = new PhonebookNoteViewModel();
                    CurrentPhonebookNoteForm.Identifier = Guid.NewGuid();
                    CurrentPhonebookNoteForm.ItemStatus = ItemStatus.Added;
                    CurrentPhonebookNoteForm.IsSynced   = false;
                    return;
                }

                CurrentPhonebookNoteForm            = new PhonebookNoteViewModel();
                CurrentPhonebookNoteForm.Identifier = Guid.NewGuid();
                CurrentPhonebookNoteForm.ItemStatus = ItemStatus.Added;
                CurrentPhonebookNoteForm.IsSynced   = false;
                PhonebookCreatedUpdated();

                DisplayPhonebookNoteData();

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

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