2018-11-18 18:49:40 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2019-01-12 11:25:51 +01:00
|
|
|
|
using System.Net.Mail;
|
2018-11-18 18:49:40 +01:00
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using HospitalServerManager.InterfacesAndEnums;
|
|
|
|
|
using HospitalServerManager.Model;
|
2019-01-07 19:49:48 +01:00
|
|
|
|
using HospitalServerManager.Model.Basic;
|
2018-12-29 11:58:25 +01:00
|
|
|
|
using HospitalServerManager.Model.Controllers;
|
2019-01-12 11:25:51 +01:00
|
|
|
|
using Windows.UI.Popups;
|
2018-11-18 18:49:40 +01:00
|
|
|
|
|
|
|
|
|
namespace HospitalServerManager.ViewModel
|
|
|
|
|
{
|
|
|
|
|
class RosterViewModel
|
|
|
|
|
{
|
|
|
|
|
private ModelRoster _Roster { get; set; }
|
|
|
|
|
private Controllers.DatabaseReader DbReader { get; set; }
|
2019-01-11 22:32:18 +01:00
|
|
|
|
private Type ActualViewModelType { get; set; }
|
2019-01-07 19:49:48 +01:00
|
|
|
|
private List<ISqlTableModel> ModelsList => _Roster.ModelsEnumerable.ToList();
|
|
|
|
|
public RangeObservableCollection<IPrimaryKeyGetable> ModelsCollection = new RangeObservableCollection<IPrimaryKeyGetable>();
|
2018-12-29 11:58:25 +01:00
|
|
|
|
public IEnumerable<string> ColumnNames { get => _Roster.ColumnNames; }
|
|
|
|
|
public IDictionary<int, string> ColumnTypes { get => _Roster.ColumnTypes; }
|
|
|
|
|
public Dictionary<string, Type> EnumTypes { get => _Roster.EnumTypes; }
|
2019-01-11 22:32:18 +01:00
|
|
|
|
private SmtpMailSender mailSender = new SmtpMailSender();
|
|
|
|
|
private Func<Task> lastReadMethod ;
|
2018-11-18 18:49:40 +01:00
|
|
|
|
|
2018-12-29 11:58:25 +01:00
|
|
|
|
public RosterViewModel()
|
2018-11-18 18:49:40 +01:00
|
|
|
|
{
|
|
|
|
|
DbReader = new Controllers.DatabaseReader();
|
|
|
|
|
_Roster = new ModelRoster();
|
|
|
|
|
}
|
2019-01-11 22:32:18 +01:00
|
|
|
|
public void SetActualViewModel(Type viewModel)
|
|
|
|
|
{
|
|
|
|
|
ActualViewModelType = viewModel;
|
|
|
|
|
}
|
|
|
|
|
private void RefreshRecords()
|
|
|
|
|
{
|
2018-12-29 11:58:25 +01:00
|
|
|
|
ModelsCollection.Clear();
|
2019-01-11 22:32:18 +01:00
|
|
|
|
List<IPrimaryKeyGetable> lista = new List<IPrimaryKeyGetable>();
|
|
|
|
|
ModelsList.ToList().ForEach(model => lista.Add((IPrimaryKeyGetable)Activator.CreateInstance(ActualViewModelType, model)));
|
2018-12-29 11:58:25 +01:00
|
|
|
|
ModelsCollection.AddRange(lista);
|
2019-01-11 22:32:18 +01:00
|
|
|
|
}
|
|
|
|
|
public async Task ReadAsync(Type viewModel, string tableName)
|
|
|
|
|
{
|
|
|
|
|
/*ModelsCollection.Clear();
|
|
|
|
|
ActualViewModelType = viewModel;*/
|
|
|
|
|
lastReadMethod = async () => await _Roster.ReadModels(tableName);
|
|
|
|
|
await GetDataWithoutSaveAsync(viewModel, tableName);
|
|
|
|
|
//RefreshRecords();
|
2018-11-18 18:49:40 +01:00
|
|
|
|
}
|
2019-01-11 22:32:18 +01:00
|
|
|
|
public async Task GetDataWithoutSaveAsync(Type viewModel, string tableName)
|
|
|
|
|
{
|
|
|
|
|
ModelsCollection.Clear();
|
|
|
|
|
ActualViewModelType = viewModel;
|
|
|
|
|
await _Roster.ReadModels(tableName);
|
|
|
|
|
RefreshRecords();
|
|
|
|
|
}
|
|
|
|
|
public async Task InitializeViewModelsAsync(string tableName)
|
2019-01-07 19:49:48 +01:00
|
|
|
|
{
|
|
|
|
|
await _Roster.GetColumnNames(tableName);
|
|
|
|
|
await _Roster.GetColumnTypes(tableName);
|
|
|
|
|
}
|
2019-01-11 22:32:18 +01:00
|
|
|
|
private async Task GetColumnNamesAsync(string tableName)
|
2019-01-07 19:49:48 +01:00
|
|
|
|
{
|
|
|
|
|
await _Roster.GetColumnNames(tableName);
|
|
|
|
|
}
|
2019-01-11 22:32:18 +01:00
|
|
|
|
public async Task CreateRecordAsync(string tableName, IEnumerable<string> valuesList)
|
2018-12-29 11:58:25 +01:00
|
|
|
|
{
|
2019-01-11 22:32:18 +01:00
|
|
|
|
await _Roster.CreateRecordAsync(tableName, valuesList);
|
|
|
|
|
await lastReadMethod();
|
|
|
|
|
RefreshRecords();
|
2018-12-29 11:58:25 +01:00
|
|
|
|
}
|
2019-01-11 22:32:18 +01:00
|
|
|
|
public async Task UpdateRecordAsync(string tableName, IPrimaryKeyGetable viewModel, string fieldToUpdate, string valueToUpdate)
|
2019-01-07 19:49:48 +01:00
|
|
|
|
{
|
2019-01-11 22:32:18 +01:00
|
|
|
|
await _Roster.UpdateRecordAsync(tableName, viewModel.GetPrimaryKey(), viewModel.GetPrimaryKeyName() , fieldToUpdate, valueToUpdate);
|
|
|
|
|
await lastReadMethod();
|
|
|
|
|
RefreshRecords();
|
2019-01-07 19:49:48 +01:00
|
|
|
|
}
|
2019-01-11 22:32:18 +01:00
|
|
|
|
public async Task DeleteRecordAsync(string tableName, IPrimaryKeyGetable viewModel)
|
2019-01-07 19:49:48 +01:00
|
|
|
|
{
|
|
|
|
|
var actualModelType = ModelsList[0].GetType();
|
|
|
|
|
var sqlModelToDelete = ModelsList.Where(x => (x as SqlTable).PrimaryKey == viewModel.GetPrimaryKey()).First();
|
2019-01-11 22:32:18 +01:00
|
|
|
|
await _Roster.DeleteRecordAsync(tableName, sqlModelToDelete as SqlTable);
|
|
|
|
|
await lastReadMethod();
|
|
|
|
|
RefreshRecords();
|
2019-01-07 19:49:48 +01:00
|
|
|
|
}
|
|
|
|
|
public async void Sort(Type viewModel, string tableName, string orderBy, string criterium)
|
|
|
|
|
{
|
|
|
|
|
ModelsCollection.Clear();
|
2019-01-11 22:32:18 +01:00
|
|
|
|
ActualViewModelType = viewModel;
|
|
|
|
|
await (lastReadMethod = async () => await _Roster.Sort(tableName, orderBy, criterium)).Invoke();
|
|
|
|
|
RefreshRecords();
|
2019-01-07 19:49:48 +01:00
|
|
|
|
}
|
|
|
|
|
public async void Search(Type viewModel, string tableName, string orderBy, string criterium, string searchIn, string searchValue)
|
|
|
|
|
{
|
|
|
|
|
ModelsCollection.Clear();
|
2019-01-11 22:32:18 +01:00
|
|
|
|
ActualViewModelType = viewModel;
|
2019-01-07 19:49:48 +01:00
|
|
|
|
await _Roster.Search(tableName, orderBy, criterium, searchIn, searchValue);
|
2019-01-11 22:32:18 +01:00
|
|
|
|
RefreshRecords();
|
|
|
|
|
}
|
|
|
|
|
public async void SendEmailAsync(IHasEmailAdress sendToModel)
|
|
|
|
|
{
|
2019-01-12 11:25:51 +01:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
await mailSender.SendEmailAsync(sendToModel.GetEmailAdress().Address, "WIADOMOSC TESTOWA", "TEMAT TEST");
|
|
|
|
|
}
|
|
|
|
|
catch (SmtpException e)
|
|
|
|
|
{
|
|
|
|
|
await new MessageDialog("Błąd połączenia z serwerem poczty | " + e.Message).ShowAsync();
|
|
|
|
|
}
|
2019-01-07 19:49:48 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2018-11-18 18:49:40 +01:00
|
|
|
|
}
|