diff --git a/.vs/HospitalServerManager/v15/.suo b/.vs/HospitalServerManager/v15/.suo index 760c65e..b4cd209 100644 Binary files a/.vs/HospitalServerManager/v15/.suo and b/.vs/HospitalServerManager/v15/.suo differ diff --git a/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide b/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide index a687ca1..002e90e 100644 Binary files a/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide and b/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide differ diff --git a/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-shm b/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-shm index 399190d..0b271bb 100644 Binary files a/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-shm and b/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-shm differ diff --git a/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-wal b/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-wal index 1e69014..4e12d3d 100644 Binary files a/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-wal and b/.vs/HospitalServerManager/v15/Server/sqlite3/storage.ide-wal differ diff --git a/App.xaml b/App.xaml index 878dbd3..b7fedb8 100644 --- a/App.xaml +++ b/App.xaml @@ -2,6 +2,7 @@ x:Class="HospitalServerManager.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:HospitalServerManager"> + xmlns:local="using:HospitalServerManager" + RequestedTheme="Light"> diff --git a/HospitalServerManager.csproj b/HospitalServerManager.csproj index 226ce53..5f6feda 100644 --- a/HospitalServerManager.csproj +++ b/HospitalServerManager.csproj @@ -100,6 +100,7 @@ + @@ -112,6 +113,7 @@ + @@ -137,6 +139,9 @@ MainFrameView.xaml + + NewAdmissionPage.xaml + NewRecordDialog.xaml @@ -146,8 +151,8 @@ RoomsPage.xaml - - ColumnListView.xaml + + SurgeriesPage.xaml @@ -191,6 +196,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -203,7 +212,7 @@ Designer MSBuild:Compile - + Designer MSBuild:Compile diff --git a/InterfacesAndEnums/Interfaces.cs b/InterfacesAndEnums/Interfaces.cs index a8c7e02..da3f749 100644 --- a/InterfacesAndEnums/Interfaces.cs +++ b/InterfacesAndEnums/Interfaces.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net.Mail; using System.Text; using System.Threading.Tasks; using Windows.UI.Xaml.Controls; @@ -50,4 +51,9 @@ namespace HospitalServerManager.InterfacesAndEnums IEnumerable GetColumnNames(string tableName); IDictionary GetColumnTypesNames(string tableName); } + public interface IHasEmailAdress + { + bool IsEmailAdressInitialized(); + MailAddress GetEmailAdress(); + } } diff --git a/Model/Basic/Patient.cs b/Model/Basic/Patient.cs index c27d4ff..3ed8cfa 100644 --- a/Model/Basic/Patient.cs +++ b/Model/Basic/Patient.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Net.Mail; using System.Text; using System.Threading.Tasks; using HospitalServerManager.InterfacesAndEnums; @@ -15,6 +16,7 @@ namespace HospitalServerManager.Model.Basic public DateTime BirthDate { get; protected set; } public PatientState PatientState { get; protected set; } public Sex PatientSex { get; protected set; } + public MailAddress EmailAdress { get; protected set; } protected Patient() : base() { diff --git a/Model/Basic/Surgery.cs b/Model/Basic/Surgery.cs index 77e68db..2f2737a 100644 --- a/Model/Basic/Surgery.cs +++ b/Model/Basic/Surgery.cs @@ -1,4 +1,5 @@ using HospitalServerManager.InterfacesAndEnums; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -25,5 +26,15 @@ namespace HospitalServerManager.Model.Basic Cost = decimal.Parse(listOfValues[4]); Refoundation = int.Parse(listOfValues[5]) > 100 ? 100 : int.Parse(listOfValues[5]); } + [JsonConstructor] + protected Surgery(string operationID, string name, string averageTime, string operationType, decimal cost, int refoundation) + :base(operationID, "Id_operacji", new List()) + { + SurgeryName = name; + AverageTime = TimeSpan.Parse(averageTime); + KindOfSurgery = operationType.GetEnumFromDescription(); + Cost = cost; + Refoundation = refoundation; + } } } diff --git a/Model/Controllers/SmtpMailSender.cs b/Model/Controllers/SmtpMailSender.cs new file mode 100644 index 0000000..e2e2d78 --- /dev/null +++ b/Model/Controllers/SmtpMailSender.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Mail; +using System.Text; +using System.Threading.Tasks; +using Windows.UI.Popups; + +namespace HospitalServerManager.Model.Controllers +{ + class SmtpMailSender + { + private MailAddress userEmail; + SmtpClient emailClient = new SmtpClient("smtp-mail.outlook.com", 587); + public SmtpMailSender() + { + // TODO: Więcej interfejsów ! + emailClient.Credentials = new NetworkCredential("margrz29@st.amu.edu.pl", "M@rce!7364818M"); + userEmail = new MailAddress("margrz29@st.amu.edu.pl"); + /*emailClient.Credentials = new NetworkCredential("konstancja01@wp.pl", "mikapako12"); + userEmail = new MailAddress("konstancja01@wp.pl");*/ + /*emailClient.Credentials = new NetworkCredential("emailforapplication@o2.pl", "emailforapp"); + userEmail = new MailAddress("emailforapplication@o2.pl");*/ + emailClient.UseDefaultCredentials = false; + } + public SmtpMailSender(string userName, string password) + { + userEmail = new MailAddress(userName); + emailClient.EnableSsl = true; + emailClient.Credentials = new NetworkCredential(userName, password); + } + public async Task SendEmailAsync(string sendTo, string textBody, string subject) + { + // TODO: Dodać walidację ! + MailMessage mailMessage = new MailMessage("margrz29@st.amu.edu.pl", "margrz29@st.amu.edu.pl"/*userEmail, new MailAddress(sendTo)*/); + mailMessage.Body = textBody; + mailMessage.Subject = subject; + emailClient.DeliveryMethod = SmtpDeliveryMethod.Network; + //emailClient.DeliveryMethod = SmtpDeliveryMethod.Network; + //await emailClient.SendMailAsync(mailMessage); + await SendEmailAsync(mailMessage); + } + public async Task SendEmailAsync(MailMessage completeMailMessage) + { + // TODO: Dodać walidację ! + emailClient.SendCompleted += EmailClient_SendCompleted; + emailClient.Send(completeMailMessage); + } + + private void EmailClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) + { + // TODO: Dodać Cancell + var token = e.UserState; + if (e.Error != null) + { + new MessageDialog("ERRORS : " + e.Error.ToString()); + } + else + { + new MessageDialog("EMAIL SEND : " + token.ToString()); + } + } + } +} diff --git a/Model/Controllers/WebService.cs b/Model/Controllers/WebService.cs index 4448c18..07c1b62 100644 --- a/Model/Controllers/WebService.cs +++ b/Model/Controllers/WebService.cs @@ -108,6 +108,9 @@ namespace HospitalServerManager.Model.Controllers using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); + var str = await response.Content.ReadAsStringAsync(); + if (str == "ERROR") + return false; return true; } } @@ -118,6 +121,9 @@ namespace HospitalServerManager.Model.Controllers using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); + var str = await response.Content.ReadAsStringAsync(); + if(str == "ERROR") + return false; return true; } } @@ -128,6 +134,9 @@ namespace HospitalServerManager.Model.Controllers using (var response = await httpClient.SendAsync(message)) { response.EnsureSuccessStatusCode(); + var str = await response.Content.ReadAsStringAsync(); + if (str == "ERROR") + return false; return true; } } diff --git a/Model/ModelRoster.cs b/Model/ModelRoster.cs index 5823d0d..448df51 100644 --- a/Model/ModelRoster.cs +++ b/Model/ModelRoster.cs @@ -20,7 +20,7 @@ namespace HospitalServerManager.Model public IDictionary ColumnTypes { get; private set; } public Dictionary EnumTypes { get; protected set; } public IEnumerable ModelsEnumerable { get => _modelsList; } - //private Controllers.DatabaseReader DatabaseReader = new Controllers.DatabaseReader(); + public ModelRoster() { ActualTableName = string.Empty; @@ -37,8 +37,30 @@ namespace HospitalServerManager.Model /*ColumnNames = await GetColumnNames(); ColumnTypes = await GetColumnTypes();*/ IEnumerable response = new List(); - if(tableName == "Pacjenci") response = await webService.GetRecordAsync(tableName); - else if(tableName == "Lekarze") response = await webService.GetRecordAsync(tableName); + switch (tableName) + { + case "Przyjecia": + response = await webService.GetRecordAsync(tableName); + break; + case "Pacjenci": + response = await webService.GetRecordAsync(tableName); + break; + case "Lekarze": + response = await webService.GetRecordAsync(tableName); + break; + case "Diagnozy": + response = await webService.GetRecordAsync(tableName); + break; + case "Operacje": + response = await webService.GetRecordAsync(tableName); + break; + case "Sale": + response = await webService.GetRecordAsync(tableName); + break; + default: + response = null; + break; + } _modelsList.AddRange(response); } public async Task> GetColumnNames(string tableName) @@ -58,15 +80,17 @@ namespace HospitalServerManager.Model ColumnTypes = await webService.GetColumnTypesAsync(ActualTableName); return ColumnTypes; } - public async void CreateRecord(string tableName, IEnumerable valueList) + public async Task CreateRecordAsync(string tableName, IEnumerable valueList) { - await webService.CreateNewRecordAsync(tableName, valueList); + if (!await webService.CreateNewRecordAsync(tableName, valueList)) + await new MessageDialog("Wystąpił błąd, sprawdź poprawność danych").ShowAsync(); } - public async void UpdateRecord(string tableName, string primaryKey, string primaryKeyName, string fieldToUpdate, string valueToUpdate) + public async Task UpdateRecordAsync(string tableName, string primaryKey, string primaryKeyName, string fieldToUpdate, string valueToUpdate) { - await webService.UpdateRecordAsync(tableName, primaryKey, primaryKeyName, fieldToUpdate, valueToUpdate); + if(!await webService.UpdateRecordAsync(tableName, primaryKey, primaryKeyName, fieldToUpdate, valueToUpdate)) + await new MessageDialog("Wystąpił błąd, sprawdź poprawność danych").ShowAsync(); } - public async void DeleteRecord(string tableName, SqlTable modelToDelete) + public async Task DeleteRecordAsync(string tableName, SqlTable modelToDelete) { if(!(modelToDelete is Admission)) { @@ -81,15 +105,17 @@ namespace HospitalServerManager.Model response = await mDialog.ShowAsync(); if (response == mDialog.Commands.First()) { - DeleteRecord("Przyjecia", modelToDelete.PrimaryKey, GetForeignKeyNameFromAdmissionsTable(tableName)); - DeleteRecord(tableName, modelToDelete.PrimaryKey, modelToDelete.PrimaryKeyName); + await DeleteRecord("Przyjecia", modelToDelete.PrimaryKey, GetForeignKeyNameFromAdmissionsTable(tableName)); + await DeleteRecord(tableName, modelToDelete.PrimaryKey, modelToDelete.PrimaryKeyName); } } + else + await DeleteRecord(tableName, modelToDelete.PrimaryKey, modelToDelete.PrimaryKeyName); } else - DeleteRecord(tableName, modelToDelete.PrimaryKey, modelToDelete.PrimaryKeyName); + await DeleteRecord(tableName, modelToDelete.PrimaryKey, modelToDelete.PrimaryKeyName); } - private async void DeleteRecord(string tableName, string primaryKey, string primaryKeyName) + private async Task DeleteRecord(string tableName, string primaryKey, string primaryKeyName) { await webService.DeleteRecordAsync(tableName, primaryKey, primaryKeyName); } @@ -199,6 +225,7 @@ namespace HospitalServerManager.Model } _modelsList.AddRange(response); } + public async Task Search(string tableName, string orderBy, string criterium, string searchIn, string searchValue) { _modelsList.Clear(); diff --git a/View/AdmissionsPage.xaml b/View/AdmissionsPage.xaml index 2b77429..cfbea26 100644 --- a/View/AdmissionsPage.xaml +++ b/View/AdmissionsPage.xaml @@ -7,7 +7,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" - Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Loaded="Page_Loaded"> + Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> @@ -31,7 +31,7 @@ -