예제 #1
0
        public void Remove(INoteDisplayedData obj)
        {
            var note = adapter.ConvertToNote(obj) as CustomerNote;

            dataProvider.Delete(note);
            reserve.Remove(note);

            Save();
        }
예제 #2
0
        /// <summary>
        /// Отображает выбранную запись в <see cref="NoteEditionPage"/>
        /// </summary>
        /// <param name="note"></param>
        private void DisplayNote(INoteDisplayedData note)
        {
            var page = new NoteEditionPage(note);

            page.ItemRemoved += Page_ItemRemoved;
            page.EndOfInput  += HidePage;
            page.ItemCreated += Page_ItemCreated;

            AddNoteFrame.Navigate(page);
        }
예제 #3
0
        public NoteEditionPage(INoteDisplayedData noteDisplayedData) : this()
        {
            isOnCreation = noteDisplayedData is null ||
                           noteDisplayedData.Name is null;

            this.noteDisplayedData = noteDisplayedData;
            DataContext            = noteDisplayedData;

            if (isOnCreation == false)
            {
                noteDisplayedData.Date = ctrl.TimeToCorrectFormat(noteDisplayedData.Date);
                hourCB.SelectedItem    = ctrl.InitTime(noteDisplayedData.Date.Hour);
                minuteCB.SelectedItem  = ctrl.InitTime(noteDisplayedData.Date.Minute);
            }
        }
예제 #4
0
 /// <summary>
 /// Обработка события со страницы - создание объекта
 /// </summary>
 /// <param name="obj"></param>
 private void Page_ItemCreated(INoteDisplayedData obj)
 {
     //если элемент был успешно добавлен запускаем внутренний таск
     var res = ctrl.Add(obj).ContinueWith(t =>
     {
         Debug.WriteLine("в главном потоке меняет GUI");
         //в главном потоке меняет GUI
         var innerTask = new Task(() =>
         {
             mainWinData.Add(obj);
             HidePage();
         },
                                  TaskCreationOptions.AttachedToParent);
         innerTask.Start(uiContext);
     }, TaskContinuationOptions.NotOnFaulted);
 }
예제 #5
0
        //SOLVE: make notificator
        //TODO: add DatePicker Template
        //TODO: потокобезопасность в MainWindowData
        //SOLVE: при addAsync кидается Exception - нужно, чтобы Task просто умирал

        /// <summary>
        /// Добавляет запись асинхронно
        /// </summary>
        /// <param name="obj"></param>
        /// <returns>Может вернуть Task.Status = Faulted, если возникла ошибка</returns>
        public async Task Add(INoteDisplayedData obj)
        {
            var note = adapter.ConvertToNote(obj) as CustomerNote;

            var addTask = dataProvider.AddAsync(note);

            await addTask.ContinueWith(t =>
            {
                Notify(OnSuccessfulAdditionMessage);
                reserve.Add(note);
                Save();
            },
                                       TaskContinuationOptions.OnlyOnRanToCompletion);

            await addTask.ContinueWith(t =>
            {
                Notify(OnAdditionExceptionMessage);
                throw t.Exception.InnerException;
            },
                                       TaskContinuationOptions.OnlyOnFaulted);
        }
예제 #6
0
 public NoteItem(INoteDisplayedData noteDisplayedData) : this()
 {
     DataContext = NoteData = noteDisplayedData;
 }
예제 #7
0
 /// <summary>
 /// Обработка события со страницы - удаление объекта
 /// </summary>
 /// <param name="obj"></param>
 private void Page_ItemRemoved(INoteDisplayedData obj)
 {
     mainWinData.Remove(obj);
     ctrl.Remove(obj);
 }
예제 #8
0
 public INote ConvertToNote(INoteDisplayedData displayedData) =>
 new CustomerNote(displayedData.Name, displayedData.Phone, displayedData.Date);