Advertisement
Mateus_Costa

CadastroDotacaoViewModel - explicado

May 21st, 2020
1,378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.54 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.Reactive;
  5. using System.Reactive.Concurrency;
  6. using CTR.Infrastructure.Repository;
  7. using CTR.Models.POCO;
  8. using CTR.Utils;
  9. using ReactiveUI;
  10.  
  11. namespace CTR.ViewModels
  12. {
  13.     public class CadastroDotacaoViewModel : ViewModelBase
  14.     {
  15.         public CadastroDotacaoViewModel(IRepository repository, DispatcherScheduler uiDispatcherScheduler)
  16.             : base(repository, uiDispatcherScheduler)
  17.         {
  18.             // Inicialização dos campos
  19.             Secretarias = new ObservableCollection<Secretaria>();
  20.             SalvarDotacaoCommand = ReactiveCommand.Create(SalvarDotacaoExecute);
  21.  
  22.             // Pegamos todas as secretarias previamente cadastradas
  23.             Repository.GetAll<Secretaria>()
  24.                 .Busy(this)
  25.                 .Subscribe(CarregarSecretarias); // Chamamos a rotina CarregarSecretarias quando elas forem regastadas do banco
  26.         }
  27.  
  28.         public string Descricao { get; set; }
  29.  
  30.         /// <summary>
  31.         /// Secretarias previamente cadastradas. Essa propriedade representa uma lista de secretarias (no caso uma comboBox)
  32.         /// </summary>
  33.         public ObservableCollection<Secretaria> Secretarias { get; }
  34.  
  35.         /// <summary>
  36.         /// Representa a secretaria selecionada pelo usuário
  37.         /// </summary>
  38.         public Secretaria SecretariaSelecionada { get; set; }
  39.  
  40.         /// <summary>
  41.         /// Comando para salvar dotação
  42.         /// </summary>
  43.         public ReactiveCommand<Unit, Unit> SalvarDotacaoCommand { get; }
  44.  
  45.         /// <summary>
  46.         /// Rotina de carregamento das secretarias
  47.         /// </summary>
  48.         /// <param name="secretarias">As secretarias que foram regatadas do banco</param>
  49.         private void CarregarSecretarias(IEnumerable<Secretaria> secretarias)
  50.         {
  51.             // Aqui pegamos as secretadas que foram obtidas no banco e populamos a lista de secretarias que iremos trabalhar.
  52.             foreach(var secretaria in secretarias)
  53.             {
  54.                 Secretarias.Add(secretaria);
  55.             }
  56.         }
  57.  
  58.         private void SalvarDotacaoExecute()
  59.         {
  60.             // Criamos uma dotação com os dados contido na tela
  61.             var dotacao = new Dotacao
  62.             {
  63.                 Descricao = Descricao,
  64.                 SecretariaId = SecretariaSelecionada.SecretariaId
  65.             };
  66.  
  67.             // Salvamos a dotação no banco
  68.             Repository.Add(dotacao).Subscribe();
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement