diff options
author | Donatas Adamonis <dona0169@edu.easj.dk> | 2017-05-29 21:36:29 +0200 |
---|---|---|
committer | Donatas Adamonis <dona0169@edu.easj.dk> | 2017-05-29 21:36:29 +0200 |
commit | 027024c1ff85f24d2de78fbca87712f16be33508 (patch) | |
tree | 6d65174eaf58c745399ceacf176cb0fd4c5743c6 | |
parent | 512f2d0dfd19a6f5e13a6c65537b0f0ca34de150 (diff) | |
parent | 8d651eff96f623cba3e75d5474a7e69736962db5 (diff) |
merge
43 files changed, 1405 insertions, 977 deletions
diff --git a/ApartmentManager/ApartmentManager.sln b/ApartmentManager/ApartmentManager.sln index 3cb16cf..86bb4ee 100644 --- a/ApartmentManager/ApartmentManager.sln +++ b/ApartmentManager/ApartmentManager.sln @@ -1,9 +1,12 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26403.7 +VisualStudioVersion = 15.0.26430.6 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApartmentManager", "ApartmentManager\ApartmentManager.csproj", "{95401ED6-D03C-417D-8897-81B5454D2426}" + ProjectSection(ProjectDependencies) = postProject + {D777744A-9676-4193-BD59-6F30C724C87A} = {D777744A-9676-4193-BD59-6F30C724C87A} + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HousingWebApi", "HousingWebApi\HousingWebApi.csproj", "{D777744A-9676-4193-BD59-6F30C724C87A}" EndProject @@ -42,7 +45,6 @@ Global {95401ED6-D03C-417D-8897-81B5454D2426}.Release|x86.Build.0 = Release|x86 {95401ED6-D03C-417D-8897-81B5454D2426}.Release|x86.Deploy.0 = Release|x86 {D777744A-9676-4193-BD59-6F30C724C87A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D777744A-9676-4193-BD59-6F30C724C87A}.Debug|Any CPU.Build.0 = Debug|Any CPU {D777744A-9676-4193-BD59-6F30C724C87A}.Debug|ARM.ActiveCfg = Debug|Any CPU {D777744A-9676-4193-BD59-6F30C724C87A}.Debug|ARM.Build.0 = Debug|Any CPU {D777744A-9676-4193-BD59-6F30C724C87A}.Debug|x64.ActiveCfg = Debug|Any CPU diff --git a/ApartmentManager/ApartmentManager/ApartmentManager.csproj b/ApartmentManager/ApartmentManager/ApartmentManager.csproj index 5f8866e..601b96b 100644 --- a/ApartmentManager/ApartmentManager/ApartmentManager.csproj +++ b/ApartmentManager/ApartmentManager/ApartmentManager.csproj @@ -99,16 +99,15 @@ <DependentUpon>AppShell.xaml</DependentUpon> </Compile> <Compile Include="Common\RelayCommand.cs" /> - <Compile Include="Common\Controls\NavMenuListView.cs" /> - <Compile Include="Handler\BoardMemberHandler.cs" /> - <Compile Include="Handler\BoardResidentsHandler.cs" /> + <Compile Include="Controls\NavMenuListView.cs" /> + <Compile Include="Handler\BmHandler.cs" /> <Compile Include="Handler\LoginHandler.cs" /> <Compile Include="Handler\ApartmentHandler.cs" /> <Compile Include="Model\Apartment.cs" /> <Compile Include="Model\DefectComments.cs" /> <Compile Include="Model\DefectPicture.cs" /> <Compile Include="Persistency\ImgurPhotoUploader.cs" /> - <Compile Include="Singletons\BoardMemberCatalogSingleton.cs" /> + <Compile Include="Singletons\BmSingleton.cs" /> <Compile Include="Model\Defect.cs" /> <Compile Include="Model\NavMenuItem.cs" /> <Compile Include="Singletons\CatalogSingleton.cs" /> @@ -119,7 +118,7 @@ <Compile Include="Persistency\PersistenceFacade.cs" /> <Compile Include="Properties\Annotations.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="ViewModel\BoardMemberViewModel.cs" /> + <Compile Include="ViewModel\BmViewModel.cs" /> <Compile Include="ViewModel\ApartmentViewModel.cs" /> <Compile Include="ViewModel\LoginViewModel.cs" /> <Compile Include="View\ApartmentDefectPage.xaml.cs"> @@ -134,23 +133,29 @@ <Compile Include="View\ApartmentPage.xaml.cs"> <DependentUpon>ApartmentPage.xaml</DependentUpon> </Compile> - <Compile Include="View\BoardMemberManageApartment.xaml.cs"> - <DependentUpon>BoardMemberManageApartment.xaml</DependentUpon> + <Compile Include="View\BmChangesPage.xaml.cs"> + <DependentUpon>BmChangesPage.xaml</DependentUpon> </Compile> - <Compile Include="View\BoardMembersDefectsPage.xaml.cs"> - <DependentUpon>BoardMembersDefectsPage.xaml</DependentUpon> + <Compile Include="View\BmEditApartmentPage.xaml.cs"> + <DependentUpon>BmEditApartmentPage.xaml</DependentUpon> </Compile> - <Compile Include="View\BoardMembersMainPage.xaml.cs"> - <DependentUpon>BoardMembersMainPage.xaml</DependentUpon> + <Compile Include="View\BmResidentsPage.xaml.cs"> + <DependentUpon>BmResidentsPage.xaml</DependentUpon> </Compile> - <Compile Include="View\BoardMemberCreateApartmentPage.xaml.cs"> - <DependentUpon>BoardMemberCreateApartmentPage.xaml</DependentUpon> + <Compile Include="View\BmApartmentsPage.xaml.cs"> + <DependentUpon>BmApartmentsPage.xaml</DependentUpon> </Compile> - <Compile Include="View\DefectsPicturesBoard.xaml.cs"> - <DependentUpon>DefectsPicturesBoard.xaml</DependentUpon> + <Compile Include="View\BmDefectsPage.xaml.cs"> + <DependentUpon>BmDefectsPage.xaml</DependentUpon> </Compile> - <Compile Include="View\InfoForBoardMembers.xaml.cs"> - <DependentUpon>InfoForBoardMembers.xaml</DependentUpon> + <Compile Include="View\BmMainPage.xaml.cs"> + <DependentUpon>BmMainPage.xaml</DependentUpon> + </Compile> + <Compile Include="View\BmCreateApartmentPage.xaml.cs"> + <DependentUpon>BmCreateApartmentPage.xaml</DependentUpon> + </Compile> + <Compile Include="View\BmUsersPage.xaml.cs"> + <DependentUpon>BmUsersPage.xaml</DependentUpon> </Compile> <Compile Include="View\LoginPage.xaml.cs"> <DependentUpon>LoginPage.xaml</DependentUpon> @@ -206,27 +211,35 @@ <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - <Page Include="View\BoardMemberManageApartment.xaml"> + <Page Include="View\BmChangesPage.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="View\BmEditApartmentPage.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - <Page Include="View\BoardMembersDefectsPage.xaml"> + <Page Include="View\BmResidentsPage.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - <Page Include="View\BoardMembersMainPage.xaml"> + <Page Include="View\BmApartmentsPage.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - <Page Include="View\BoardMemberCreateApartmentPage.xaml"> + <Page Include="View\BmDefectsPage.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - <Page Include="View\DefectsPicturesBoard.xaml"> + <Page Include="View\BmMainPage.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - <Page Include="View\InfoForBoardMembers.xaml"> + <Page Include="View\BmCreateApartmentPage.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="View\BmUsersPage.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> @@ -257,6 +270,9 @@ <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform"> <Version>5.3.3</Version> </PackageReference> + <PackageReference Include="Microsoft.Xaml.Behaviors.Uwp.Managed"> + <Version>2.0.0</Version> + </PackageReference> </ItemGroup> <ItemGroup> <AppxManifest Include="Package.appxmanifest"> diff --git a/ApartmentManager/ApartmentManager/AppShell.xaml.cs b/ApartmentManager/ApartmentManager/AppShell.xaml.cs index b1a88c6..7332ad7 100644 --- a/ApartmentManager/ApartmentManager/AppShell.xaml.cs +++ b/ApartmentManager/ApartmentManager/AppShell.xaml.cs @@ -63,15 +63,23 @@ namespace ApartmentManager { Symbol = Symbol.Home, Label = "Home", - DestPage = typeof(BoardMembersMainPage), + DestPage = typeof(BmMainPage), IsSelected = true }, new NavMenuItem() { Symbol = Symbol.Comment, - Label = "Defects", - DestPage = typeof(BoardMembersDefectsPage), + Label = "Apartments", + DestPage = typeof(BmApartmentsPage), + IsSelected = false + }, + + new NavMenuItem() + { + Symbol = Symbol.Comment, + Label = "Contract owners", + DestPage = typeof(BmUsersPage), IsSelected = false }, @@ -79,15 +87,23 @@ namespace ApartmentManager { Symbol = Symbol.Bookmarks, Label = "Residents", - DestPage = typeof(InfoForBoardMembers), + DestPage = typeof(BmResidentsPage), IsSelected = false }, new NavMenuItem() { Symbol = Symbol.Bookmarks, - Label = "Apartments", - DestPage = typeof(BoardMembersMainPage), + Label = "Defects", + DestPage = typeof(BmDefectsPage), + IsSelected = false + }, + + new NavMenuItem() + { + Symbol = Symbol.Bookmarks, + Label = "Changes", + DestPage = typeof(BmChangesPage), IsSelected = false } }); diff --git a/ApartmentManager/ApartmentManager/Handler/BmHandler.cs b/ApartmentManager/ApartmentManager/Handler/BmHandler.cs new file mode 100644 index 0000000..2cbffea --- /dev/null +++ b/ApartmentManager/ApartmentManager/Handler/BmHandler.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.ObjectModel; +using Windows.UI.Popups; +using ApartmentManager.Model; +using ApartmentManager.Persistency; +using ApartmentManager.ViewModel; +using Newtonsoft.Json; +using ApartmentManager.Singletons; + +namespace ApartmentManager.Handler +{ + public class BmHandler + { + private BmViewModel _vm; + + public BmHandler(BmViewModel vm) + { + _vm = vm; + } + + + #region APARTMENTS + + public void GetApartments() + { + BmSingleton.Instance.Apartments = JsonConvert.DeserializeObject<ObservableCollection<Apartment>>(ApiClient.GetData("api/Apartments/")); + } + + public void CreateApartment() + { + try + { + ApiClient.PostData("api/Apartments/", _vm.ApartmentTemplate); + GetApartments(); + _vm.ApartmentTemplate = new Apartment(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + public void UpdateApartment() + { + try + { + ApiClient.PutData("api/Apartments/" + _vm.ApartmentTemplate.ApartmentId, _vm.ApartmentTemplate); + GetApartments(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + public void DeleteApartment() + { + try + { + ApiClient.DeleteData("api/Apartments/" + _vm.ApartmentTemplate.ApartmentId); + BmSingleton.Instance.Apartments.Remove(_vm.ApartmentTemplate); + GetApartments(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + + public async void UploadApartmentPlan() + { + _vm.ApartmentTemplate.PlanPicture = await ImgurPhotoUploader.UploadPhotoAsync(); + } + + public void ClearApartmentTemplate() + { + _vm.ApartmentTemplate = new Apartment(); + } + #endregion + + #region USERS + + public void GetUsers() + { + var users = JsonConvert.DeserializeObject<ObservableCollection<User>>(ApiClient.GetData("api/Users/")); + BmSingleton.Instance.Users.Clear(); + foreach (var user in users) BmSingleton.Instance.Users.Add(user); + } + + public void CreateUser() + { + try + { + ApiClient.PostData("api/Users/", _vm.UserTemplate); + GetUsers(); + _vm.UserTemplate = new User(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + public void UpdateUser() + { + try + { + ApiClient.PutData("api/Users/" + _vm.UserTemplate.Username, _vm.UserTemplate); + GetUsers(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + public void DeleteUser() + { + try + { + ApiClient.DeleteData("api/Users/" + _vm.UserTemplate.Username); + BmSingleton.Instance.Users.Remove(_vm.UserTemplate); + GetUsers(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + + public async void UploadUserPhoto() + { + var picture = await ImgurPhotoUploader.UploadPhotoAsync(); + if (picture != "") + { + _vm.UserTemplate.Picture = picture; + var tmp = _vm.UserTemplate; + _vm.UserTemplate = new User(); + _vm.UserTemplate = tmp; + } + } + + public void ClearUserTemplate() + { + _vm.UserTemplate = new User(); + } + #endregion + + #region RESIDENTS + + public void GetResidents() + { + var residents = JsonConvert.DeserializeObject<ObservableCollection<Resident>>(ApiClient.GetData("api/Residents/")); + BmSingleton.Instance.Residents.Clear(); + foreach (var resident in residents) BmSingleton.Instance.Residents.Add(resident); + } + + public void CreateResident() + { + try + { + ApiClient.PostData("api/Residents/", _vm.ResidentTemplate); + GetResidents(); + _vm.ResidentTemplate = new Resident(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + public void UpdateResident() + { + try + { + ApiClient.PutData("api/Residents/" + _vm.ResidentTemplate.ResidentId, _vm.ResidentTemplate); + GetResidents(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + public void DeleteResident() + { + try + { + ApiClient.DeleteData("api/Residents/" + _vm.ResidentTemplate.ResidentId); + BmSingleton.Instance.Residents.Remove(_vm.ResidentTemplate); + GetResidents(); + } + catch (Exception e) + { + var msg = new MessageDialog(e.Message).ShowAsync(); + } + } + + public async void UploadResidentPhoto() + { + _vm.ResidentTemplate.Picture = await ImgurPhotoUploader.UploadPhotoAsync(); + var tmp = _vm.ResidentTemplate; + _vm.ResidentTemplate = new Resident(); + _vm.ResidentTemplate = tmp; + } + + public void ClearResidentTemplate() + { + _vm.ResidentTemplate = new Resident(); + } + #endregion + + } +} diff --git a/ApartmentManager/ApartmentManager/Handler/BoardMemberHandler.cs b/ApartmentManager/ApartmentManager/Handler/BoardMemberHandler.cs deleted file mode 100644 index c642b02..0000000 --- a/ApartmentManager/ApartmentManager/Handler/BoardMemberHandler.cs +++ /dev/null @@ -1,128 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Popups; -using ApartmentManager.Model; -using ApartmentManager.Persistency; -using ApartmentManager.ViewModel; -using Newtonsoft.Json; - -namespace ApartmentManager.Handler -{ - public class BoardMemberHandler - { - public BoardMemberViewModel BoardMemberViewModel { get; set; } - - public BoardMemberHandler(BoardMemberViewModel boardMemberViewModel) - { - BoardMemberViewModel = boardMemberViewModel; - } - - public void GetApartments() - { - Apartment apartment= new Apartment(); - apartment.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - - var apartmentsFromDatabase = ApiClient.GetData("api/Apartments/"); - IEnumerable<Apartment> apartmentslist = JsonConvert.DeserializeObject<IEnumerable<Apartment>>(apartmentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Clear(); - BoardMemberViewModel.NewApartment = new Apartment(); - foreach (var apartment2 in apartmentslist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Add(apartment2); - } - } - - public void CreateApartment() - { - try - { - Apartment apartment = new Apartment(); - apartment.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - apartment.Address = BoardMemberViewModel.NewApartment.Address; - apartment.Floor = BoardMemberViewModel.NewApartment.Floor; - apartment.MonthlyCharge = BoardMemberViewModel.NewApartment.MonthlyCharge; - apartment.NumberOfRooms = BoardMemberViewModel.NewApartment.NumberOfRooms; - apartment.Size = BoardMemberViewModel.NewApartment.Size; - - ApiClient.PostData("api/Apartments/", apartment); - - var apartmentsFromDatabase = ApiClient.GetData("api/Apartments/" + apartment.ApartmentId); - IEnumerable<Apartment> apartmentlist = JsonConvert.DeserializeObject<IEnumerable<Apartment>>(apartmentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Clear(); - BoardMemberViewModel.NewApartment = new Apartment(); - foreach (var apartment2 in apartmentlist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Add(apartment2); - } - } - catch (Exception e) - { - new MessageDialog(e.Message).ShowAsync(); - } - } - public void UpdateApartment() - { - try - { - Apartment apartment = new Apartment(); - apartment.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - apartment.Address = BoardMemberViewModel.NewApartment.Address; - apartment.Floor = BoardMemberViewModel.NewApartment.Floor; - apartment.MonthlyCharge = BoardMemberViewModel.NewApartment.MonthlyCharge; - apartment.NumberOfRooms = BoardMemberViewModel.NewApartment.NumberOfRooms; - apartment.Size = BoardMemberViewModel.NewApartment.Size; - - ApiClient.PutData("api/Apartments/" + apartment.ApartmentId, apartment); - var apartmentsFromDatabase = ApiClient.GetData("api/Apartments/" + apartment.ApartmentId); - IEnumerable<Apartment> apartmentslist = JsonConvert.DeserializeObject<IEnumerable<Apartment>>(apartmentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Clear(); - BoardMemberViewModel.NewApartment = new Apartment(); - foreach (var apartment2 in apartmentslist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Add(apartment2); - } - } - catch (Exception e) - { - new MessageDialog(e.Message).ShowAsync(); - } - } - public void DeleteApartment() - { - try - { - Apartment apartment = new Apartment(); - apartment.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - apartment.Address = BoardMemberViewModel.NewApartment.Address; - apartment.Floor = BoardMemberViewModel.NewApartment.Floor; - apartment.MonthlyCharge = BoardMemberViewModel.NewApartment.MonthlyCharge; - apartment.NumberOfRooms = BoardMemberViewModel.NewApartment.NumberOfRooms; - apartment.Size = BoardMemberViewModel.NewApartment.Size; - - ApiClient.DeleteData("api/Apartments/" + apartment.ApartmentId); - - var apartmentsFromDatabase = ApiClient.GetData("api/Apartments/" + apartment.ApartmentId); - IEnumerable<Apartment> apartmentslist = JsonConvert.DeserializeObject<IEnumerable<Apartment>>(apartmentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Clear(); - BoardMemberViewModel.NewApartment = new Apartment(); - foreach (var apartment2 in apartmentslist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Apartment.Add(apartment2); - } - } - catch (Exception e) - { - new MessageDialog(e.Message).ShowAsync(); - } - } - } -} diff --git a/ApartmentManager/ApartmentManager/Handler/BoardResidentsHandler.cs b/ApartmentManager/ApartmentManager/Handler/BoardResidentsHandler.cs deleted file mode 100644 index 3f6086e..0000000 --- a/ApartmentManager/ApartmentManager/Handler/BoardResidentsHandler.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Popups; -using ApartmentManager.Model; -using ApartmentManager.Persistency; -using ApartmentManager.ViewModel; -using Newtonsoft.Json; - -namespace ApartmentManager.Handler -{ - public class BoardResidentsHandler - { - public BoardMemberViewModel BoardMemberViewModel { get; set; } - - public BoardResidentsHandler(BoardMemberViewModel boardMemberViewModel) - { - BoardMemberViewModel = boardMemberViewModel; - } - public void GetApartmentsResidents() - { - Resident resident = new Resident(); - resident.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - - var residentsFromDatabase = ApiClient.GetData("api/ApartmentResidents/" + resident.ApartmentId); - IEnumerable<Resident> residentlist = JsonConvert.DeserializeObject<IEnumerable<Resident>>(residentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Clear(); - BoardMemberViewModel.NewResident = new Resident(); - foreach (var resident2 in residentlist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Add(resident2); - } - } - - public void CreateResident() - { - try - { - Resident resident = new Resident(); - - resident.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - resident.FirstName = BoardMemberViewModel.NewResident.FirstName; - resident.LastName = BoardMemberViewModel.NewResident.LastName; - resident.BirthDate = BoardMemberViewModel.NewResident.BirthDate; - resident.Email = BoardMemberViewModel.NewResident.Email; - resident.Picture = BoardMemberViewModel.NewResident.Picture; - resident.Phone = BoardMemberViewModel.NewResident.Phone; - - ApiClient.PostData("api/residents/", resident); - - var residentsFromDatabase = ApiClient.GetData("api/ApartmentResidents/" + resident.ApartmentId); - IEnumerable<Resident> residentlist = JsonConvert.DeserializeObject<IEnumerable<Resident>>(residentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Clear(); - BoardMemberViewModel.NewResident = new Resident(); - foreach (var resident2 in residentlist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Add(resident2); - } - } - catch (Exception e) - { - new MessageDialog(e.Message).ShowAsync(); - } - } - - public void DeleteResident() - { - try - { - Resident resident = new Resident(); - resident.ResidentId = BoardMemberViewModel.NewResident.ResidentId; - resident.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - resident.FirstName = BoardMemberViewModel.NewResident.FirstName; - resident.LastName = BoardMemberViewModel.NewResident.LastName; - resident.BirthDate = BoardMemberViewModel.NewResident.BirthDate; - resident.Email = BoardMemberViewModel.NewResident.Email; - resident.Picture = BoardMemberViewModel.NewResident.Picture; - resident.Phone = BoardMemberViewModel.NewResident.Phone; - - ApiClient.DeleteData("api/residents/" + resident.ResidentId); - - var residentsFromDatabase = ApiClient.GetData("api/ApartmentResidents/" + resident.ApartmentId); - IEnumerable<Resident> residentlist = JsonConvert.DeserializeObject<IEnumerable<Resident>>(residentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Clear(); - BoardMemberViewModel.NewResident = new Resident(); - foreach (var resident2 in residentlist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Add(resident2); - } - } - catch (Exception e) - { - new MessageDialog(e.Message).ShowAsync(); - } - } - public void UpdateResident() - { - try - { - Resident resident = new Resident(); - resident.ResidentId = BoardMemberViewModel.NewResident.ResidentId; - resident.ApartmentId = BoardMemberViewModel.ApartmentsNumber; - resident.FirstName = BoardMemberViewModel.NewResident.FirstName; - resident.LastName = BoardMemberViewModel.NewResident.LastName; - resident.BirthDate = BoardMemberViewModel.NewResident.BirthDate; - resident.Email = BoardMemberViewModel.NewResident.Email; - resident.Picture = BoardMemberViewModel.NewResident.Picture; - resident.Phone = BoardMemberViewModel.NewResident.Phone; - - ApiClient.PutData("api/residents/" + resident.ResidentId, resident); - var residentsFromDatabase = ApiClient.GetData("api/ApartmentResidents/" + resident.ApartmentId); - IEnumerable<Resident> residentlist = JsonConvert.DeserializeObject<IEnumerable<Resident>>(residentsFromDatabase); - - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Clear(); - BoardMemberViewModel.NewResident = new Resident(); - foreach (var resident2 in residentlist) - { - BoardMemberViewModel.BoardMemberCatalogSingleton.Residents.Add(resident2); - } - } - catch (Exception e) - { - new MessageDialog(e.Message).ShowAsync(); - } - } - } -}
\ No newline at end of file diff --git a/ApartmentManager/ApartmentManager/Handler/LoginHandler.cs b/ApartmentManager/ApartmentManager/Handler/LoginHandler.cs index 65efeca..e4d9721 100644 --- a/ApartmentManager/ApartmentManager/Handler/LoginHandler.cs +++ b/ApartmentManager/ApartmentManager/Handler/LoginHandler.cs @@ -2,34 +2,116 @@ using ApartmentManager.Persistency; using Newtonsoft.Json; using System; -using ApartmentManager.Singletons; using ApartmentManager.ViewModel; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using ApartmentManager.View; +using Windows.UI.Popups; +using ApartmentManager.Singletons; namespace ApartmentManager.Handler { - public static class LoginHandler + public class LoginHandler { - public static void LogIn(string username, string password) + + private LoginViewModel _vm; + + public LoginHandler(LoginViewModel vm) + { + _vm = vm; + } + + public void LogIn() { - string serializedUser = ApiClient.GetData($"api/Users/{username}"); + try + { + string serializedUser = ApiClient.GetData($"api/Users/{_vm.Username}"); if (serializedUser != null) { User user = JsonConvert.DeserializeObject<User>(serializedUser); - if (user.Password == password) + if (user.Password == _vm.Password) { UserSingleton.Instance.CurrentUser = user; - - - } + NavigateToMainPage(); + } else throw new Exception("Wrong password!"); } else throw new Exception("Wrong username!"); - + } + catch (Exception ex) + { + var msg = new MessageDialog(ex.Message).ShowAsync(); + } } - public static void LogOut() + public void LogOut() { UserSingleton.Instance.CurrentUser = null; + NavigateToLoginPage(); + } + + private void NavigateToMainPage() + { + AppShell appShell = Window.Current.Content as AppShell; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (appShell == null) + { + // Create a AppShell to act as the navigation context and navigate to the first page + appShell = new AppShell(); + + // Set the default language + appShell.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; + + } + + // Place our app shell in the current Window + Window.Current.Content = appShell; + + if (appShell.AppFrame.Content == null) + { + // When the navigation stack isn't restored, navigate to the first page + // suppressing the initial entrance animation. + if (UserSingleton.Instance.CurrentUser.IsBm) + { + BmViewModel bvm = new BmViewModel(); + bvm.BmHandler.GetApartments(); + bvm.BmHandler.GetUsers(); + bvm.BmHandler.GetResidents(); + appShell.AppFrame.Navigate(typeof(BmMainPage)); + } + else + { + ApartmentViewModel avm = new ApartmentViewModel(); + avm.ApartmentHandler.GetApartmentResidents(); + avm.ApartmentHandler.GetApartment(); + avm.ApartmentHandler.GetApartmentDefects(); + appShell.AppFrame.Navigate(typeof(ApartmentPage)); + } + } + + // Ensure the current window is active + Window.Current.Activate(); + } + + private void NavigateToLoginPage() + { + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + rootFrame.Navigate(typeof(LoginPage)); + Window.Current.Activate(); } } } diff --git a/ApartmentManager/ApartmentManager/Model/Apartment.cs b/ApartmentManager/ApartmentManager/Model/Apartment.cs index 74fe410..a32c081 100644 --- a/ApartmentManager/ApartmentManager/Model/Apartment.cs +++ b/ApartmentManager/ApartmentManager/Model/Apartment.cs @@ -1,37 +1,38 @@ -namespace ApartmentManager.Model +using ApartmentManager.Annotations; +using System.ComponentModel; +using System.Runtime.CompilerServices; + +namespace ApartmentManager.Model { - public class Apartment + public class Apartment : INotifyPropertyChanged { public int ApartmentId { get; set; } - public double? Size { get; set; } - public int? NumberOfRooms { get; set; } - public double? MonthlyCharge { get; set; } - public int? Floor { get; set; } + public double Size { get; set; } + public int NumberOfRooms { get; set; } + public double MonthlyCharge { get; set; } + public int Floor { get; set; } public string Address { get; set; } - public string PlanPicture { get; set; } + private string _planPicture; public Apartment() { } - public Apartment(int apartmentId, double? size, int? numberOfRooms, double? monthlyCharge, int? floor, string address) + public string PlanPicture { - ApartmentId = apartmentId; - Size = size; - NumberOfRooms = numberOfRooms; - MonthlyCharge = monthlyCharge; - Floor = floor; - Address = address; + get => _planPicture; + set + { + _planPicture = value; + OnPropertyChanged(nameof(PlanPicture)); + } } - //public override string ToString() - //{ - // return string.Format( - // "Apartment No: {0} Size: {1} NoOfRooms: {2} MonthlyCharge: {3} Floor: {4} Address: {5}", - // ApartmentNumber, Size, NumberOfRooms, MonthlyCharge, Floor, Address); - //} + public event PropertyChangedEventHandler PropertyChanged; - public override string ToString() + [NotifyPropertyChangedInvocator] + protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { - return string.Format($"Apartment number: {ApartmentId}, Size: {Size} Number of rooms: {NumberOfRooms}, Monthly charge: {MonthlyCharge}, Floor: {Floor}, Address: {Address}"); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } } } diff --git a/ApartmentManager/ApartmentManager/Model/Resident.cs b/ApartmentManager/ApartmentManager/Model/Resident.cs index ac20ffa..aaa7af4 100644 --- a/ApartmentManager/ApartmentManager/Model/Resident.cs +++ b/ApartmentManager/ApartmentManager/Model/Resident.cs @@ -8,7 +8,7 @@ namespace ApartmentManager.Model public int ApartmentId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } - public DateTime BirthDate { get; set; } + public DateTimeOffset BirthDate { get; set; } public string Phone { get; set; } public string Email { get; set; } public string Picture { get; set; } @@ -17,19 +17,5 @@ namespace ApartmentManager.Model { BirthDate = DateTime.Now; } - public Resident(int residentId, int apartmentId, string firstName, string lastName, DateTime birthDate, string phone, string email) - { - ResidentId = residentId; - ApartmentId = apartmentId; - FirstName = firstName; - LastName = lastName; - BirthDate = birthDate; - Phone = phone; - Email = email; - } - public override string ToString() - { - return string.Format($"First name: {FirstName}, Last name: {LastName}, Birth date: {BirthDate}, Phone: {Phone}, Email: {Email} "); - } } } diff --git a/ApartmentManager/ApartmentManager/Model/User.cs b/ApartmentManager/ApartmentManager/Model/User.cs index e7e43ec..26a6b29 100644 --- a/ApartmentManager/ApartmentManager/Model/User.cs +++ b/ApartmentManager/ApartmentManager/Model/User.cs @@ -1,11 +1,6 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; using ApartmentManager.Annotations; namespace ApartmentManager.Model @@ -18,24 +13,12 @@ namespace ApartmentManager.Model public bool IsBm { get; set; } public string FirstName { get; set; } public string LastName { get; set; } - public DateTime BirthDate { get; set; } + public DateTimeOffset BirthDate { get; set; } public string Phone { get; set; } public string Email { get; set; } public string _picture { get; set; } - public DateTime? MoveInDate { get; set; } - public DateTime? MoveOutDate { get; set; } - - - public User() { } - - public User(string FirstName, string LastName, string Phone, DateTime BirthDate, string Email) - { - this.FirstName = FirstName; - this.LastName = LastName; - this.BirthDate = BirthDate; - this.Phone = Phone; - this.Email = Email; - } + public DateTimeOffset? MoveInDate { get; set; } + public DateTimeOffset? MoveOutDate { get; set; } public string Picture { @@ -46,13 +29,7 @@ namespace ApartmentManager.Model OnPropertyChanged(nameof(Picture)); } } - public override string ToString() - { - return string.Format($"First name {FirstName} Last name {LastName} Phone {Phone}"); - } - - - + public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] diff --git a/ApartmentManager/ApartmentManager/Persistency/ImgurPhotoUploader.cs b/ApartmentManager/ApartmentManager/Persistency/ImgurPhotoUploader.cs index 7e9ebf2..433058f 100644 --- a/ApartmentManager/ApartmentManager/Persistency/ImgurPhotoUploader.cs +++ b/ApartmentManager/ApartmentManager/Persistency/ImgurPhotoUploader.cs @@ -6,6 +6,7 @@ using System.IO; using System.Threading.Tasks; using Windows.Storage; using Windows.Storage.Pickers; +using Windows.UI.Popups; namespace ApartmentManager.Persistency { @@ -16,6 +17,7 @@ namespace ApartmentManager.Persistency /// </summary> public async static Task<string> UploadPhotoAsync() { + try { //Create new file picker FileOpenPicker fp = new FileOpenPicker() { @@ -38,11 +40,22 @@ namespace ApartmentManager.Persistency //Get image file with picker StorageFile file = await fp.PickSingleFileAsync(); - //Upload to Imgur and return link - var client = new ImgurClient("7b05a61ed8df74f", "ade6f79163e19f92f852bc553bbe399d7d4218fe"); - var endpoint = new ImageEndpoint(client); - IImage image = await endpoint.UploadImageStreamAsync(await file.OpenStreamForReadAsync()); - return image.Link; + //Upload to Imgur and return link + if (file != null) + { + var client = new ImgurClient("7b05a61ed8df74f", "ade6f79163e19f92f852bc553bbe399d7d4218fe"); + var endpoint = new ImageEndpoint(client); + IImage image = await endpoint.UploadImageStreamAsync(await file.OpenStreamForReadAsync()); + return image.Link; + } + return ""; + } + catch(Exception ex) + { + var msg = new MessageDialog(ex.Message).ShowAsync(); + return ""; + } } + } }
\ No newline at end of file diff --git a/ApartmentManager/ApartmentManager/Singletons/BmSingleton.cs b/ApartmentManager/ApartmentManager/Singletons/BmSingleton.cs new file mode 100644 index 0000000..737a1f3 --- /dev/null +++ b/ApartmentManager/ApartmentManager/Singletons/BmSingleton.cs @@ -0,0 +1,22 @@ +using ApartmentManager.Model; +using System.Collections.ObjectModel; + +namespace ApartmentManager.Singletons +{ + public class BmSingleton + { + private static BmSingleton _instance; + public static BmSingleton Instance => _instance ?? (_instance = new BmSingleton()); + + public ObservableCollection<Apartment> Apartments { get; set; } + public ObservableCollection<User> Users { get; set; } + public ObservableCollection<Resident> Residents { get; set; } + public ObservableCollection<Defect> Defects { get; set; } + + private BmSingleton() + { + Users = new ObservableCollection<User>(); + Residents = new ObservableCollection<Resident>(); + } + } +} diff --git a/ApartmentManager/ApartmentManager/Singletons/BoardMemberCatalogSingleton.cs b/ApartmentManager/ApartmentManager/Singletons/BoardMemberCatalogSingleton.cs deleted file mode 100644 index 1a563ef..0000000 --- a/ApartmentManager/ApartmentManager/Singletons/BoardMemberCatalogSingleton.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Media.Imaging; - -namespace ApartmentManager.Model -{ - public class BoardMemberCatalogSingleton - { - private static BoardMemberCatalogSingleton instance = new BoardMemberCatalogSingleton(); - - public static BoardMemberCatalogSingleton Instance => instance; - - public ObservableCollection<Apartment> Apartment { get; set; } - public ObservableCollection<User> User { get; set; } - public ObservableCollection<Resident> Residents { get; set; } - public ObservableCollection<Defect> Defects { get; set; } - private BoardMemberCatalogSingleton() - { - Apartment = new ObservableCollection<Apartment>(); - - User = new ObservableCollection<User>(); - //User.Add(new User("Bibis", "Kiausiai", "3214568", new DateTime(2017, 1, 5, 2, 27, 0), "Bibis@mail.com", 1)); - //Apartment = new ObservableCollection<Apartment>(); - //Apartment.Add(new Apartment(1, "30 Square meters", 2, "200", 0, "adresas")); - //Apartment.Add(new Apartment(2, "40 Square meters", 4, "300", 1, "kvaerkebyvej")); - //Apartment.Add(new Apartment(3, "28 Square meters", 1, "125", 0, "ugandavej")); - - Residents = new ObservableCollection<Resident>(); - //Residents.Add(new Resident("Bibis", "Kiausiai", 3214568, new DateTime(2017, 1, 5, 0, 0, 0), "Bibis@mail.com", 1)); - //Residents.Add(new Resident("Bibis", "Kiausiai", 3214568, new DateTime(2017, 1, 5, 0, 0, 0), "Bibis@mail.com", 1)); - //Residents.Add(new Resident("Bibis", "Kiausiai", 3214568, new DateTime(2017, 1, 5, 0, 0, 0), "Bibis@mail.com", 1)); - //Residents.Add(new Resident("Bibis", "Kiausiai", 3214568, new DateTime(2017, 1, 5, 0, 0, 0), "Bibis@mail.com", 1)); - - Defects = new ObservableCollection<Defect>(); - //Defects.Add(new Defect(1, 2, "Leaking downpipe", DateTime.Now, new Image(), new Image(), new Image(), "downpipe will explode, do something!", "hello", "Not fixed")); - //Defects.Add(new Defect(1, 2, "Leaking downpipe", DateTime.Now, new Image(), new Image(), new Image(), "downpipe will explode, do something!", "hello", "Not fixed")); - //Defects.Add(new Defect(1, 2, "Leaking downpipe", DateTime.Now, new Image(), new Image(), new Image(), "downpipe will explode, do something!", "hello", "Fixed")); - } - } -} diff --git a/ApartmentManager/ApartmentManager/Singletons/UserSingleton.cs b/ApartmentManager/ApartmentManager/Singletons/UserSingleton.cs index e5ca71e..1f291c9 100644 --- a/ApartmentManager/ApartmentManager/Singletons/UserSingleton.cs +++ b/ApartmentManager/ApartmentManager/Singletons/UserSingleton.cs @@ -1,28 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using ApartmentManager.Model; -namespace ApartmentManager.Model +namespace ApartmentManager.Singletons { public class UserSingleton { - private static UserSingleton instance; + private static UserSingleton _instance; + public static UserSingleton Instance => _instance ?? (_instance = new UserSingleton()); + public User CurrentUser { get; set; } private UserSingleton() { } - - public static UserSingleton Instance - { - get - { - if (instance == null) - { - instance = new UserSingleton(); - } - return instance; - } - } } } diff --git a/ApartmentManager/ApartmentManager/View/ApartmentDefectPage.xaml b/ApartmentManager/ApartmentManager/View/ApartmentDefectPage.xaml index df052a6..001de31 100644 --- a/ApartmentManager/ApartmentManager/View/ApartmentDefectPage.xaml +++ b/ApartmentManager/ApartmentManager/View/ApartmentDefectPage.xaml @@ -15,7 +15,7 @@ <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <StackPanel Margin="10"> <TextBlock Text="Apartment Defects" HorizontalAlignment="Center" FontSize="30" FontWeight="Bold"></TextBlock> - <ListView ItemsSource="{Binding CatalogSingleton.Defects}" Height="615" SelectedItem="{Binding NewDefect, Mode=TwoWay}" > + <ListView ItemsSource="{Binding CatalogSingleton.Defects}" Height="500" SelectedItem="{Binding NewDefect, Mode=TwoWay}" > <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> diff --git a/ApartmentManager/ApartmentManager/View/BmApartmentsPage.xaml b/ApartmentManager/ApartmentManager/View/BmApartmentsPage.xaml new file mode 100644 index 0000000..ffc28c2 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmApartmentsPage.xaml @@ -0,0 +1,134 @@ +<Page + x:Class="ApartmentManager.View.BmApartmentsPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:core="using:Microsoft.Xaml.Interactions.Core" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:interactivity="using:Microsoft.Xaml.Interactivity" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + + <Page.Resources> + <Style x:Key="ApartmentsListItemStyle" TargetType="ListViewItem"> + <Setter Property="Background" Value="White" /> + <Setter Property="Padding" Value="0" /> + <Setter Property="Margin" Value="12,12,12,0" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="BorderBrush" Value="#DFE0E4" /> + <Setter Property="HorizontalContentAlignment" Value="Stretch" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ListViewItem"> + <ListViewItemPresenter /> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + <Style x:Key="TextBlockStyle" TargetType="TextBlock"> + <Setter Property="Margin" Value="0,0,0,10" /> + <Setter Property="Foreground" Value="White" /> + </Style> + <Style x:Key="ActionButtonStyle" TargetType="Button"> + <Setter Property="Background" Value="Transparent" /> + <Setter Property="Height" Value="40" /> + <Setter Property="Width" Value="40" /> + <Setter Property="HorizontalAlignment" Value="Right" /> + <Setter Property="VerticalAlignment" Value="Top" /> + </Style> + </Page.Resources> + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + <Page.BottomAppBar> + <CommandBar> + <CommandBar.Content> + <Grid /> + </CommandBar.Content> + <AppBarButton + Click="GoToCreateApartmentPage" + Icon="Add" + Label="Create Apartment" + Command="{Binding ClearApartmentTemplateCommand}"> + <AppBarButton.DataContext> + <vm:BmViewModel/> + </AppBarButton.DataContext> + </AppBarButton> + </CommandBar> + </Page.BottomAppBar> + <Grid Background="#E9EBEE"> + <Grid.RowDefinitions> + <RowDefinition Height="40" /> + <RowDefinition /> + </Grid.RowDefinitions> + <StackPanel Background="{StaticResource AppBarBackgroundThemeBrush}" Orientation="Horizontal"> + <TextBlock + Margin="40,0,10,0" + VerticalAlignment="Center" + Text="Floor: " /> + <ComboBox + VerticalAlignment="Center" + ItemsSource="{Binding FloorNumbers}" + SelectedItem="{Binding SelectedFloor, Mode=TwoWay}" /> + <TextBlock + Margin="10,0" + VerticalAlignment="Center" + Text="Apartment number: " /> + <TextBox Height="32" /> + </StackPanel> + <ListView + x:Name="ApartmentsList" + Grid.Row="1" + ItemsSource="{Binding BmSingleton.Apartments}" + SelectedItem="{Binding ApartmentTemplate, Mode=TwoWay}"> + <ListView.ItemContainerStyle> + <Style BasedOn="{StaticResource ApartmentsListItemStyle}" TargetType="ListViewItem" /> + </ListView.ItemContainerStyle> + <ListView.ItemTemplate> + <DataTemplate> + <Grid> + <Grid.RowDefinitions> + <RowDefinition /> + <RowDefinition /> + </Grid.RowDefinitions> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="50px" /> + </Grid.ColumnDefinitions> + <StackPanel Padding="10"> + <TextBlock><Run Text="Apartment number: " /><Run Text="{Binding ApartmentId}" /></TextBlock> + <TextBlock><Run Text="Floor: " /><Run Text="{Binding Floor}" /></TextBlock> + <TextBlock><Run Text="Address: " /><Run Text="{Binding Address}" /></TextBlock> + </StackPanel> + <Button + Grid.Column="1" + Click="SelectApartment" + Command="{Binding DeleteApartmentCommand}" + DataContext="{Binding ElementName=ApartmentsList, Path=DataContext}" + Style="{StaticResource ActionButtonStyle}"> + <SymbolIcon Symbol="Clear" ToolTipService.ToolTip="Delete" /> + </Button> + <Button + Grid.Column="1" + Margin="0,40,0,0" + Click="SelectApartment" + DataContext="{Binding ElementName=ApartmentsList, Path=DataContext}" + Style="{StaticResource ActionButtonStyle}"> + <SymbolIcon Symbol="Edit" ToolTipService.ToolTip="Edit" /> + + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmEditApartmentPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + </Grid> + </Grid> + </DataTemplate> + </ListView.ItemTemplate> + </ListView> + </Grid> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/BmApartmentsPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BmApartmentsPage.xaml.cs new file mode 100644 index 0000000..d7adedb --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmApartmentsPage.xaml.cs @@ -0,0 +1,29 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace ApartmentManager.View +{ + /// <summary> + /// Page for managing apartments. + /// </summary> + public sealed partial class BmApartmentsPage : Page + { + public BmApartmentsPage() + { + InitializeComponent(); + } + + private void SelectApartment(object sender, RoutedEventArgs e) + { + var item = ((Grid)((Button)sender).Parent).DataContext; + var container = (ListViewItem)ApartmentsList.ContainerFromItem(item); + + container.IsSelected = true; + } + + private void GoToCreateApartmentPage(object sender, RoutedEventArgs e) + { + Frame.Navigate(typeof(BmCreateApartmentPage)); + } + } +} diff --git a/ApartmentManager/ApartmentManager/View/BmChangesPage.xaml b/ApartmentManager/ApartmentManager/View/BmChangesPage.xaml new file mode 100644 index 0000000..6914288 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmChangesPage.xaml @@ -0,0 +1,11 @@ +<Page + x:Class="ApartmentManager.View.BmChangesPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + mc:Ignorable="d"> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" /> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/InfoForBoardMembers.xaml.cs b/ApartmentManager/ApartmentManager/View/BmChangesPage.xaml.cs index ebefddc..c729da8 100644 --- a/ApartmentManager/ApartmentManager/View/InfoForBoardMembers.xaml.cs +++ b/ApartmentManager/ApartmentManager/View/BmChangesPage.xaml.cs @@ -20,9 +20,9 @@ namespace ApartmentManager.View /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> - public sealed partial class InfoForBoardMembers : Page + public sealed partial class BmChangesPage : Page { - public InfoForBoardMembers() + public BmChangesPage() { this.InitializeComponent(); } diff --git a/ApartmentManager/ApartmentManager/View/BmCreateApartmentPage.xaml b/ApartmentManager/ApartmentManager/View/BmCreateApartmentPage.xaml new file mode 100644 index 0000000..dd19315 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmCreateApartmentPage.xaml @@ -0,0 +1,81 @@ +<Page + x:Class="ApartmentManager.View.BmCreateApartmentPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:core="using:Microsoft.Xaml.Interactions.Core" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:interactivity="using:Microsoft.Xaml.Interactivity" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="600" /> + <ColumnDefinition Width="300"/> + </Grid.ColumnDefinitions> + <Button + Margin="0,20,20,0" + HorizontalAlignment="Right" + VerticalAlignment="Top" + Command="{Binding UploadApartmentPlanCommand}" + Content="Add plan" /> + <Image + Margin="20,80" + VerticalAlignment="Top" + Source="{Binding ApartmentTemplate.PlanPicture}" /> + <StackPanel + Grid.Column="1" + Margin="20,0,0,0" + VerticalAlignment="Top" + Orientation="Vertical"> + <TextBlock + Margin="0,10,0,10" + HorizontalAlignment="Center" + FontSize="20" + FontWeight="Bold" + Text="Apartment information:" /> + <TextBlock Margin="0,10,0,10" Text="Apartment number:" /> + <TextBox Text="{Binding ApartmentTemplate.ApartmentId, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Square meters:" /> + <TextBox Text="{Binding ApartmentTemplate.Size, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Number of rooms:" /> + <TextBox Text="{Binding ApartmentTemplate.NumberOfRooms, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Monthly charge:" /> + <TextBox Text="{Binding ApartmentTemplate.MonthlyCharge, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Floor:" /> + <TextBox Text="{Binding ApartmentTemplate.Floor, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Address:" /> + <TextBox Text="{Binding ApartmentTemplate.Address, Mode=TwoWay}" /> + <StackPanel Margin="0,20,0,0" Orientation="Horizontal" Width="150" HorizontalAlignment="Right"> + <Button + Margin="0,0,20,0" + Content="Go back" HorizontalAlignment="Right"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmApartmentsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + <Button + Background="#FF274CCD" + Command="{Binding CreateApartmentCommand}" + Content="Add" + Foreground="White" HorizontalAlignment="Right"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmApartmentsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + </StackPanel> + </StackPanel> + </Grid> + </Grid> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/BmCreateApartmentPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BmCreateApartmentPage.xaml.cs new file mode 100644 index 0000000..41c3f67 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmCreateApartmentPage.xaml.cs @@ -0,0 +1,15 @@ +using Windows.UI.Xaml.Controls; + +namespace ApartmentManager.View +{ + /// <summary> + /// Page for adding new apartment. + /// </summary> + public sealed partial class BmCreateApartmentPage : Page + { + public BmCreateApartmentPage() + { + InitializeComponent(); + } + } +} diff --git a/ApartmentManager/ApartmentManager/View/BmDefectsPage.xaml b/ApartmentManager/ApartmentManager/View/BmDefectsPage.xaml new file mode 100644 index 0000000..5cc0506 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmDefectsPage.xaml @@ -0,0 +1,16 @@ +<Page + x:Class="ApartmentManager.View.BmDefectsPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" /> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/BmDefectsPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BmDefectsPage.xaml.cs new file mode 100644 index 0000000..638cc3d --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmDefectsPage.xaml.cs @@ -0,0 +1,16 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace ApartmentManager.View +{ + /// <summary> + /// Page for managing defects. + /// </summary> + public sealed partial class BmDefectsPage : Page + { + public BmDefectsPage() + { + InitializeComponent(); + } + } +} diff --git a/ApartmentManager/ApartmentManager/View/BmEditApartmentPage.xaml b/ApartmentManager/ApartmentManager/View/BmEditApartmentPage.xaml new file mode 100644 index 0000000..d52cdaa --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmEditApartmentPage.xaml @@ -0,0 +1,87 @@ +<Page + x:Class="ApartmentManager.View.BmEditApartmentPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:core="using:Microsoft.Xaml.Interactions.Core" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:interactivity="using:Microsoft.Xaml.Interactivity" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="600" /> + <ColumnDefinition Width="300" /> + </Grid.ColumnDefinitions> + <Button + Margin="0,20,20,0" + HorizontalAlignment="Right" + VerticalAlignment="Top" + Command="{Binding UploadApartmentPlanCommand}" + Content="Add plan" /> + <Image + Margin="20,80" + VerticalAlignment="Top" + Source="{Binding ApartmentTemplate.PlanPicture}" /> + <StackPanel + Grid.Column="1" + Margin="20,0,0,0" + VerticalAlignment="Top" + Orientation="Vertical"> + <TextBlock + Margin="0,10,0,10" + HorizontalAlignment="Center" + FontSize="20" + FontWeight="Bold" + Text="Apartment information:" /> + <TextBlock Margin="0,10,0,10" Text="Apartment number:" /> + <TextBox Text="{Binding ApartmentTemplate.ApartmentId, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Square meters:" /> + <TextBox Text="{Binding ApartmentTemplate.Size, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Number of rooms:" /> + <TextBox Text="{Binding ApartmentTemplate.NumberOfRooms, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Monthly charge:" /> + <TextBox Text="{Binding ApartmentTemplate.MonthlyCharge, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Floor:" /> + <TextBox Text="{Binding ApartmentTemplate.Floor, Mode=TwoWay}" /> + <TextBlock Margin="0,10,0,10" Text="Address:" /> + <TextBox Text="{Binding ApartmentTemplate.Address, Mode=TwoWay}" /> + <StackPanel + Width="170" + Margin="0,20,0,0" + HorizontalAlignment="Right" + Orientation="Horizontal"> + <Button + Margin="0,0,20,0" + HorizontalAlignment="Right" + Content="Go back" + Command="{Binding GetApartmentsCommand}"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmApartmentsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + <Button + HorizontalAlignment="Right" + Background="#FF274CCD" + Command="{Binding UpdateApartmentCommand}" + Content="Update" + Foreground="White"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmApartmentsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + </StackPanel> + </StackPanel> + </Grid> + </Grid> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/BmEditApartmentPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BmEditApartmentPage.xaml.cs new file mode 100644 index 0000000..63e71eb --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmEditApartmentPage.xaml.cs @@ -0,0 +1,15 @@ +using Windows.UI.Xaml.Controls; + +namespace ApartmentManager.View +{ + /// <summary> + /// Page for editing apartment. + /// </summary> + public sealed partial class BmEditApartmentPage : Page + { + public BmEditApartmentPage() + { + InitializeComponent(); + } + } +} diff --git a/ApartmentManager/ApartmentManager/View/BmMainPage.xaml b/ApartmentManager/ApartmentManager/View/BmMainPage.xaml new file mode 100644 index 0000000..adf2364 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmMainPage.xaml @@ -0,0 +1,89 @@ +<Page + x:Class="ApartmentManager.View.BmMainPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:core="using:Microsoft.Xaml.Interactions.Core" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:interactivity="using:Microsoft.Xaml.Interactivity" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> + <TextBlock + Margin="80,30,0,0" + FontSize="36" + Text="Welcome, board member!" /> + <Grid Margin="100,100,0,0"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="600" /> + <ColumnDefinition Width="200" /> + </Grid.ColumnDefinitions> + <Image + Grid.Column="0" + VerticalAlignment="Top" + Source="ms-appx:///Assets/Ostbanehus.jpg" /> + <StackPanel Grid.Column="1" Margin="20,0,0,0"> + <TextBlock + Margin="0,0,0,10" + HorizontalAlignment="Stretch" + FontSize="20" + Text="Manage:" /> + <Button + Margin="0,0,0,10" + HorizontalAlignment="Stretch" + Content="Apartments"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmApartmentsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + <Button + Margin="0,0,0,10" + HorizontalAlignment="Stretch" + Content="Contract owners"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmUsersPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + <Button + Margin="0,0,0,10" + HorizontalAlignment="Stretch" + Content="Residents"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmResidentsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + <Button + Margin="0,0,0,10" + HorizontalAlignment="Stretch" + Content="Defects"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmDefectsPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + <Button + Margin="0,0,0,10" + HorizontalAlignment="Stretch" + Content="Apartment changes"> + <interactivity:Interaction.Behaviors> + <core:EventTriggerBehavior EventName="Click"> + <core:NavigateToPageAction TargetPage="ApartmentManager.View.BmChangesPage" /> + </core:EventTriggerBehavior> + </interactivity:Interaction.Behaviors> + </Button> + </StackPanel> + </Grid> + </Grid> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/BmMainPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BmMainPage.xaml.cs new file mode 100644 index 0000000..5d287f1 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmMainPage.xaml.cs @@ -0,0 +1,16 @@ +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace ApartmentManager.View +{ + /// <summary> + /// Main page for board members. + /// </summary> + public sealed partial class BmMainPage : Page + { + public BmMainPage() + { + InitializeComponent(); + } + } +} diff --git a/ApartmentManager/ApartmentManager/View/BmResidentsPage.xaml b/ApartmentManager/ApartmentManager/View/BmResidentsPage.xaml new file mode 100644 index 0000000..4bcb6b0 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmResidentsPage.xaml @@ -0,0 +1,167 @@ +<Page + x:Class="ApartmentManager.View.BmResidentsPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + + <Page.Resources> + <Style x:Key="ListItemStyle" TargetType="ListViewItem"> + <Setter Property="Background" Value="White" /> + <Setter Property="Padding" Value="0" /> + <Setter Property="Margin" Value="12,12,12,0" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="BorderBrush" Value="#DFE0E4" /> + <Setter Property="HorizontalContentAlignment" Value="Stretch" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ListViewItem"> + <ListViewItemPresenter /> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + <Style x:Key="TextBlockStyle" TargetType="TextBlock"> + <Setter Property="Margin" Value="0,0,0,10" /> + <Setter Property="Foreground" Value="White" /> + </Style> + <Style x:Key="ActionButtonStyle" TargetType="Button"> + <Setter Property="Background" Value="Transparent" /> + <Setter Property="Height" Value="40" /> + <Setter Property="Width" Value="40" /> + <Setter Property="HorizontalAlignment" Value="Right" /> + <Setter Property="VerticalAlignment" Value="Top" /> + </Style> + </Page.Resources> + + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="50" /> + <RowDefinition /> + </Grid.RowDefinitions> + <Grid.ColumnDefinitions> + <ColumnDefinition /> + <ColumnDefinition Width="450" /> + </Grid.ColumnDefinitions> + + <Grid Background="#E9EBEE"> + <Grid.ColumnDefinitions> + <ColumnDefinition /> + <ColumnDefinition /> + </Grid.ColumnDefinitions> + <StackPanel Orientation="Horizontal"> + <TextBlock + Margin="50,0,10,0" + VerticalAlignment="Center" + FontSize="18" + Text="Search: " /> + <TextBox Height="32" PlaceholderText="Type search parameters..." /> + </StackPanel> + <AppBarButton + Grid.Column="1" + HorizontalAlignment="Right" + Command="{Binding ClearResidentTemplateCommand}" + Icon="Add" /> + </Grid> + <ListView + Grid.Row="1" + Padding="10" + Background="#E9EBEE" + ItemsSource="{Binding BmSingleton.Residents}" + SelectedItem="{Binding ResidentTemplate, Mode=TwoWay}"> + + <ListView.ItemContainerStyle> + <Style BasedOn="{StaticResource ListItemStyle}" TargetType="ListViewItem" /> + </ListView.ItemContainerStyle> + + <ListView.ItemTemplate> + + <DataTemplate> + <Grid Height="150"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="150" /> + <ColumnDefinition /> + </Grid.ColumnDefinitions> + + <Image + Margin="5" + Source="{Binding Picture}" + Stretch="Fill" /> + + <Grid Grid.Column="1"> + <StackPanel Margin="10,0,0,0" VerticalAlignment="Center"> + <TextBlock FontSize="20"><Run Text="Name: " /><Run Text="{Binding FirstName}" /><Run Text=" " /><Run Text="{Binding LastName}" /></TextBlock> + <TextBlock><Run Text="Apartment number: " /><Run Text="{Binding ApartmentId}" /></TextBlock> + <TextBlock><Run Text="Birth date: " /><Run Text="{Binding BirthDate.Day}" /><Run Text="." /><Run Text="{Binding BirthDate.Month}" /><Run Text="." /><Run Text="{Binding BirthDate.Year}" /></TextBlock> + <TextBlock><Run Text="E-mail address: " /><Run Text="{Binding Email}" /></TextBlock> + <TextBlock><Run Text="Phone number: " /><Run Text="{Binding Phone}" /></TextBlock> + </StackPanel> + </Grid> + </Grid> + </DataTemplate> + + </ListView.ItemTemplate> + </ListView> + <StackPanel + Grid.RowSpan="2" + Grid.Column="1" + Width="400" + HorizontalAlignment="Center"> + <TextBlock + Margin="0,5,0,10" + HorizontalAlignment="Center" + FontSize="20" + FontWeight="Bold" + Text="Resident Info" /> + <Image + Width="150" + Height="150" + Source="{Binding ResidentTemplate.Picture, Mode=TwoWay}" /> + <Button + Margin="0,5,0,0" + HorizontalAlignment="Stretch" + Command="{Binding UploadResidentPhotoCommand}" + Content="Upload Picture" /> + <TextBlock Margin="0,5,0,1" Text="Apartment number" /> + <TextBox Text="{Binding ResidentTemplate.ApartmentId, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text=" First name" /> + <TextBox Text="{Binding ResidentTemplate.FirstName, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Last Name" /> + <TextBox Text="{Binding ResidentTemplate.LastName, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Birth date" /> + <DatePicker HorizontalAlignment="Stretch" Date="{Binding ResidentTemplate.BirthDate, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Email address" /> + <TextBox Text="{Binding ResidentTemplate.Email, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Phone number" /> + <TextBox Text="{Binding ResidentTemplate.Phone, Mode=TwoWay}" /> + + <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> + <Button + Width="125" + Margin="0" + Command="{Binding CreateResidentCommand}" + Content="Create" /> + <Button + Width="125" + Margin="10,0" + Command="{Binding DeleteResidentCommand}" + Content="Delete" /> + <Button + Width="125" + Margin="0" + Command="{Binding UpdateResidentCommand}" + Content="Update" /> + </StackPanel> + </StackPanel> + </Grid> + </Grid> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/DefectsPicturesBoard.xaml.cs b/ApartmentManager/ApartmentManager/View/BmResidentsPage.xaml.cs index de9332c..2a43996 100644 --- a/ApartmentManager/ApartmentManager/View/DefectsPicturesBoard.xaml.cs +++ b/ApartmentManager/ApartmentManager/View/BmResidentsPage.xaml.cs @@ -20,9 +20,9 @@ namespace ApartmentManager.View /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> - public sealed partial class DefectsPicturesBoard : Page + public sealed partial class BmResidentsPage : Page { - public DefectsPicturesBoard() + public BmResidentsPage() { this.InitializeComponent(); } diff --git a/ApartmentManager/ApartmentManager/View/BmUsersPage.xaml b/ApartmentManager/ApartmentManager/View/BmUsersPage.xaml new file mode 100644 index 0000000..06b5ee7 --- /dev/null +++ b/ApartmentManager/ApartmentManager/View/BmUsersPage.xaml @@ -0,0 +1,173 @@ +<Page + x:Class="ApartmentManager.View.BmUsersPage" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:local="using:ApartmentManager.View" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:ApartmentManager.ViewModel" + mc:Ignorable="d"> + + <Page.Resources> + <Style x:Key="ListItemStyle" TargetType="ListViewItem"> + <Setter Property="Background" Value="White" /> + <Setter Property="Padding" Value="0" /> + <Setter Property="Margin" Value="12,12,12,0" /> + <Setter Property="BorderThickness" Value="1" /> + <Setter Property="BorderBrush" Value="#DFE0E4" /> + <Setter Property="HorizontalContentAlignment" Value="Stretch" /> + <Setter Property="VerticalContentAlignment" Value="Center" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ListViewItem"> + <ListViewItemPresenter /> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + <Style x:Key="TextBlockStyle" TargetType="TextBlock"> + <Setter Property="Margin" Value="0,0,0,10" /> + <Setter Property="Foreground" Value="White" /> + </Style> + <Style x:Key="ActionButtonStyle" TargetType="Button"> + <Setter Property="Background" Value="Transparent" /> + <Setter Property="Height" Value="40" /> + <Setter Property="Width" Value="40" /> + <Setter Property="HorizontalAlignment" Value="Right" /> + <Setter Property="VerticalAlignment" Value="Top" /> + </Style> + </Page.Resources> + + <Page.DataContext> + <vm:BmViewModel /> + </Page.DataContext> + + <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="50" /> + <RowDefinition /> + </Grid.RowDefinitions> + <Grid.ColumnDefinitions> + <ColumnDefinition /> + <ColumnDefinition Width="450" /> + </Grid.ColumnDefinitions> + + <Grid Background="#E9EBEE"> + <Grid.ColumnDefinitions> + <ColumnDefinition /> + <ColumnDefinition /> + </Grid.ColumnDefinitions> + <StackPanel Orientation="Horizontal"> + <TextBlock + Margin="50,0,10,0" + VerticalAlignment="Center" + FontSize="18" + Text="Search: " /> + <TextBox Height="32" PlaceholderText="Type search parameters..." /> + </StackPanel> + <AppBarButton + Grid.Column="1" + HorizontalAlignment="Right" + Command="{Binding ClearUserTemplateCommand}" + Icon="Add" /> + </Grid> + <ListView + Grid.Row="1" + Padding="10" + Background="#E9EBEE" + ItemsSource="{Binding BmSingleton.Users}" + SelectedItem="{Binding UserTemplate, Mode=TwoWay}"> + + <ListView.ItemContainerStyle> + <Style BasedOn="{StaticResource ListItemStyle}" TargetType="ListViewItem" /> + </ListView.ItemContainerStyle> + + <ListView.ItemTemplate> + + <DataTemplate> + <Grid Height="150"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="150" /> + <ColumnDefinition /> + </Grid.ColumnDefinitions> + + <Image + Margin="5" + Source="{Binding Picture}" + Stretch="Fill" /> + + <Grid Grid.Column="1"> + <StackPanel Margin="10,0,0,0" VerticalAlignment="Center"> + <TextBlock FontSize="20"><Run Text="Name: " /><Run Text="{Binding FirstName}" /><Run Text=" " /><Run Text="{Binding LastName}" /></TextBlock> + <TextBlock><Run Text="Apartment number: " /><Run Text="{Binding ApartmentId}" /></TextBlock> + <TextBlock><Run Text="Birth date: " /><Run Text="{Binding BirthDate.Day}" /><Run Text="." /><Run Text="{Binding BirthDate.Month}" /><Run Text="." /><Run Text="{Binding BirthDate.Year}" /></TextBlock> + <TextBlock><Run Text="E-mail address: " /><Run Text="{Binding Email}" /></TextBlock> + <TextBlock><Run Text="Phone number: " /><Run Text="{Binding Phone}" /></TextBlock> + </StackPanel> + </Grid> + </Grid> + </DataTemplate> + + </ListView.ItemTemplate> + </ListView> + <Grid Grid.RowSpan="2" Grid.Column="1"> + <Grid.RowDefinitions> + <RowDefinition/> + <RowDefinition Height="60"/> + </Grid.RowDefinitions> + <ScrollViewer> + <StackPanel Width="400" HorizontalAlignment="Center"> + <Image + Width="150" + Height="150" + Source="{Binding UserTemplate.Picture, Mode=TwoWay}" /> + <Button + Margin="0,5,0,0" + HorizontalAlignment="Stretch" + Command="{Binding UploadUserPhotoCommand}" + Content="Upload Picture" /> + <TextBlock Margin="0,5,0,1" Text="Username" /> + <TextBox Text="{Binding UserTemplate.Username, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Password" /> + <PasswordBox Password="{Binding UserTemplate.Password, Mode=TwoWay}" /> + <StackPanel Margin="0,10,0,0" Orientation="Horizontal"> + <TextBlock VerticalAlignment="Center" Text="Apartment number:" /> + <TextBox Margin="10,0,40,0" Text="{Binding UserTemplate.ApartmentId, Mode=TwoWay}" /> + <CheckBox Content="Board member" IsChecked="{Binding UserTemplate.IsBm}" /> + </StackPanel> + <TextBlock Margin="0,5,0,1" Text=" First name" /> + <TextBox Text="{Binding UserTemplate.FirstName, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Last Name" /> + <TextBox Text="{Binding UserTemplate.LastName, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Birth date" /> + <DatePicker HorizontalAlignment="Stretch" Date="{Binding UserTemplate.BirthDate, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Email address" /> + <TextBox Text="{Binding UserTemplate.Email, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Phone number" /> + <TextBox Text="{Binding UserTemplate.Phone, Mode=TwoWay}" /> + <TextBlock Margin="0,5,0,1" Text="Move-in date" /> + <DatePicker HorizontalAlignment="Stretch" Date="{Binding UserTemplate.MoveInDate, Mode=TwoWay}" /> + </StackPanel> + </ScrollViewer> + <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> + <Button + Width="125" + Margin="0" + Command="{Binding CreateUserCommand}" + Content="Create" /> + <Button + Width="125" + Margin="10,0" + Command="{Binding DeleteUserCommand}" + Content="Delete" /> + <Button + Width="125" + Margin="0" + Command="{Binding UpdateUserCommand}" + Content="Update" /> + </StackPanel> + </Grid> + </Grid> + </Grid> +</Page> diff --git a/ApartmentManager/ApartmentManager/View/BoardMemberCreateApartmentPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BmUsersPage.xaml.cs index 8098474..de51f22 100644 --- a/ApartmentManager/ApartmentManager/View/BoardMemberCreateApartmentPage.xaml.cs +++ b/ApartmentManager/ApartmentManager/View/BmUsersPage.xaml.cs @@ -20,9 +20,9 @@ namespace ApartmentManager.View /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> - public sealed partial class BoardMemberCreateApartmentPage : Page + public sealed partial class BmUsersPage : Page { - public BoardMemberCreateApartmentPage() + public BmUsersPage() { this.InitializeComponent(); } diff --git a/ApartmentManager/ApartmentManager/View/BoardMemberCreateApartmentPage.xaml b/ApartmentManager/ApartmentManager/View/BoardMemberCreateApartmentPage.xaml deleted file mode 100644 index d243381..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMemberCreateApartmentPage.xaml +++ /dev/null @@ -1,35 +0,0 @@ -<Page - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ApartmentManager.View" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ViewModel="using:ApartmentManager.ViewModel" - x:Class="ApartmentManager.View.BoardMemberCreateApartmentPage" - mc:Ignorable="d"> - - - <Page.DataContext> - <ViewModel:BoardMemberViewModel/> - </Page.DataContext> - - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - <StackPanel HorizontalAlignment="Center" Orientation="Vertical" VerticalAlignment="Center"> - <TextBlock Margin="0,10,0,10" Text="Apartment information:" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold"/> - <TextBlock Margin="0,10,0,10" Text="Apartment number:"/> - <TextBox Text="{Binding NewApartment.ApartmentNumber, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Square meters:"/> - <TextBox Text="{Binding NewApartment.Size, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Number of rooms:"/> - <TextBox Text="{Binding NewApartment.NumberOfRooms}"></TextBox> - <TextBlock Margin="0,10,0,10" Text="Monthly charge:"/> - <TextBox Text="{Binding NewApartment.MonthlyCharge, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Floor:"/> - <TextBox Text="{Binding NewApartment.Floor, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Address:" ></TextBlock> - <TextBox Text="{Binding NewApartment.Floor, Mode=TwoWay}"></TextBox> - <Button Content="Add" Width="225" Margin="0 20" Command="{Binding CreateApartmentCommand}"></Button> - </StackPanel> - </Grid> -</Page> diff --git a/ApartmentManager/ApartmentManager/View/BoardMemberManageApartment.xaml b/ApartmentManager/ApartmentManager/View/BoardMemberManageApartment.xaml deleted file mode 100644 index 7e164a5..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMemberManageApartment.xaml +++ /dev/null @@ -1,33 +0,0 @@ -<Page - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ApartmentManager.View" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ViewModel="using:ApartmentManager.ViewModel" - x:Class="ApartmentManager.View.BoardMemberManageApartment" - mc:Ignorable="d"> - - - <Page.DataContext> - <ViewModel:BoardMemberViewModel/> - </Page.DataContext> - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - - <StackPanel Margin="0 0" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="top" Width="1100" > - <StackPanel Orientation="Vertical"> - <Frame Background="Bisque"> - <ListView FontSize="20" FontWeight="Bold" FontFamily="Georgia" HorizontalAlignment="Left" VerticalAlignment="Top" Width="1100" ItemsSource="{Binding BoardMemberCatalogSingleton.Apartment}" SelectedItem="{Binding NewApartment, Mode=TwoWay}" Height="567"/> - </Frame> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0 0"> - <Button Width="150" Margin="50 0" Content="View residents" Click="ButtonBase_OnClick"></Button> - <Button Width="150" Content="Add apartment" Click="CreateApartment" VerticalAlignment="Bottom" HorizontalAlignment="Center"></Button> - <Button Width="150" Margin="50 0" Content="Delete apartment" Command="{Binding DeleteApartmentCommand}" VerticalAlignment="Bottom" HorizontalAlignment="Center"></Button> - <Button Width="150" Content="Update apartment" VerticalAlignment="Bottom" HorizontalAlignment="Center"></Button> - <TextBox Width="150" Text="Filter apartments" Margin="50 0" Name="TextFilter"></TextBox> - </StackPanel> - </StackPanel> - </StackPanel> - </Grid> -</Page> diff --git a/ApartmentManager/ApartmentManager/View/BoardMemberManageApartment.xaml.cs b/ApartmentManager/ApartmentManager/View/BoardMemberManageApartment.xaml.cs deleted file mode 100644 index bbda517..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMemberManageApartment.xaml.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; -using ApartmentManager.Model; -using ApartmentManager.Singletons; - -// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 - -namespace ApartmentManager.View -{ - /// <summary> - /// An empty page that can be used on its own or navigated to within a Frame. - /// </summary> - public sealed partial class BoardMemberManageApartment : Page - { - public BoardMemberManageApartment() - { - this.InitializeComponent(); - } - - private void ButtonBase_OnClick(object sender, RoutedEventArgs e) - { - this.Frame.Navigate(typeof(InfoForBoardMembers)); - } - - private void CreateApartment(object sender, RoutedEventArgs e) - { - this.Frame.Navigate(typeof(BoardMemberCreateApartmentPage)); - } - - //private bool ApartmentFilter(object item) - //{ - // if (String.IsNullOrEmpty(TextFilter.Text)) - // return true; - // else - // return BoardMemberCatalogSingleton.Instance.Apartment.IndexOf(TextFilter.Text)); - //} - - //private void txtFilter_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) - //{ - // CollectionViewSource.GetDefaultView(lvUsers.ItemsSource).Refresh(); - //} - } -} diff --git a/ApartmentManager/ApartmentManager/View/BoardMembersDefectsPage.xaml b/ApartmentManager/ApartmentManager/View/BoardMembersDefectsPage.xaml deleted file mode 100644 index 28766d5..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMembersDefectsPage.xaml +++ /dev/null @@ -1,30 +0,0 @@ -<Page - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ApartmentManager.View" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ViewModel="using:ApartmentManager.ViewModel" - x:Class="ApartmentManager.View.BoardMembersDefectsPage" - mc:Ignorable="d"> - - <Page.DataContext> - <ViewModel:BoardMemberViewModel/> - </Page.DataContext> - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - <StackPanel> - <ListView Margin="100" ItemsSource="{Binding BoardMemberCatalogSingleton.Defects}" SelectedItem="{Binding NewDefect, Mode=TwoWay}"/> - <StackPanel Margin="100 0" > - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].ApartmentNumber}" FontSize="20"/> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].Name}"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].DateUploaded}"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].Comment}"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].DefectNumber}"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].Description}"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].Status}"></TextBlock> - </StackPanel> - <Button Content="View pictures" Margin="100 40" Click="PicturesDefects"></Button> - </StackPanel> - </Grid> -</Page> diff --git a/ApartmentManager/ApartmentManager/View/BoardMembersDefectsPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BoardMembersDefectsPage.xaml.cs deleted file mode 100644 index d910d39..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMembersDefectsPage.xaml.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; - -// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 - -namespace ApartmentManager.View -{ - /// <summary> - /// An empty page that can be used on its own or navigated to within a Frame. - /// </summary> - public sealed partial class BoardMembersDefectsPage : Page - { - public BoardMembersDefectsPage() - { - this.InitializeComponent(); - } - - private void PicturesDefects(object sender, RoutedEventArgs e) - { - this.Frame.Navigate(typeof(DefectsPicturesBoard)); - } - } -} diff --git a/ApartmentManager/ApartmentManager/View/BoardMembersMainPage.xaml b/ApartmentManager/ApartmentManager/View/BoardMembersMainPage.xaml deleted file mode 100644 index 0cc58ab..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMembersMainPage.xaml +++ /dev/null @@ -1,29 +0,0 @@ -<Page - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ApartmentManager.View" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ViewModel="using:ApartmentManager.ViewModel" - x:Class="ApartmentManager.View.BoardMembersMainPage" - mc:Ignorable="d"> - <Page.DataContext> - <ViewModel:BoardMemberViewModel/> - </Page.DataContext> - - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - <StackPanel Orientation="Vertical"> - <TextBlock Text="Welcome to board memeber page" HorizontalAlignment="Center" FontSize="30" Margin="0 10"></TextBlock> - <StackPanel Orientation="Vertical" HorizontalAlignment="Right" VerticalAlignment="top" > - <Image Source="../Assets/Ostbanehus.jpg" Margin="0 0 0 40" Width="600"/> - <TextBlock Text="Manage:" FontSize="30" HorizontalAlignment="Center" Margin="0 20"></TextBlock> - <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="270 0"> - <!--<Button Width="150" Height="80" Content="Residents" Click="Residents" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>--> - <Button Width="150" Height="80" Margin="150 0" Content="Defects" Click="Defects" VerticalAlignment="Bottom" HorizontalAlignment="Center"/> - <Button Width="150" Height="80" Margin="100 0" Content="Apartments" Click="Apartments" VerticalAlignment="Bottom" HorizontalAlignment="Center"/> - </StackPanel> - </StackPanel> - </StackPanel> - </Grid> -</Page> diff --git a/ApartmentManager/ApartmentManager/View/BoardMembersMainPage.xaml.cs b/ApartmentManager/ApartmentManager/View/BoardMembersMainPage.xaml.cs deleted file mode 100644 index 3cde697..0000000 --- a/ApartmentManager/ApartmentManager/View/BoardMembersMainPage.xaml.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; - -// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 - -namespace ApartmentManager.View -{ - /// <summary> - /// An empty page that can be used on its own or navigated to within a Frame. - /// </summary> - public sealed partial class BoardMembersMainPage : Page - { - public BoardMembersMainPage() - { - this.InitializeComponent(); - } - - private void Defects(object sender, RoutedEventArgs e) - { - Frame.Navigate(typeof(BoardMembersDefectsPage)); - } - - private void Apartments(object sender, RoutedEventArgs e) - { - this.Frame.Navigate(typeof(BoardMemberManageApartment)); - } - - private void Residents(object sender, RoutedEventArgs e) - { - this.Frame.Navigate(typeof(ApartmentResidentsPage)); - } - } -} diff --git a/ApartmentManager/ApartmentManager/View/DefectsPicturesBoard.xaml b/ApartmentManager/ApartmentManager/View/DefectsPicturesBoard.xaml deleted file mode 100644 index aea4544..0000000 --- a/ApartmentManager/ApartmentManager/View/DefectsPicturesBoard.xaml +++ /dev/null @@ -1,30 +0,0 @@ -<Page - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ApartmentManager.View" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ViewModel="using:ApartmentManager.ViewModel" - x:Class="ApartmentManager.View.DefectsPicturesBoard" - mc:Ignorable="d"> - - <Page.DataContext> - <ViewModel:BoardMemberViewModel/> - </Page.DataContext> - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - <StackPanel Orientation="Vertical"> - <StackPanel Margin="0 50" Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Center"> - <Image Width="500" Source="../Assets/Person3.jpg"></Image> - <Image Width="500" Source="../Assets/Person1.jpg" Height="309"></Image> - <Image Width="500" Source="../Assets/Person2.jpg"></Image> - </StackPanel> - <StackPanel Orientation="Vertical"> - <TextBlock Text="Description of the deffect:" HorizontalAlignment="Center" FontSize="20"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].Description}" TextWrapping="Wrap" Margin="0 10" Width="400"></TextBlock> - <TextBlock Text="Comment" HorizontalAlignment="Center" FontSize="20"></TextBlock> - <TextBlock Text="{Binding BoardMemberCatalogSingleton.Defects[0].Comment}" TextWrapping="Wrap" Margin="0 10" Width="400"></TextBlock> - </StackPanel> - </StackPanel> - </Grid> -</Page> diff --git a/ApartmentManager/ApartmentManager/View/InfoForBoardMembers.xaml b/ApartmentManager/ApartmentManager/View/InfoForBoardMembers.xaml deleted file mode 100644 index e5400a1..0000000 --- a/ApartmentManager/ApartmentManager/View/InfoForBoardMembers.xaml +++ /dev/null @@ -1,48 +0,0 @@ -<Page - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:ApartmentManager.View" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:ViewModel="using:ApartmentManager.ViewModel" - x:Class="ApartmentManager.View.InfoForBoardMembers" - mc:Ignorable="d"> - - <Page.DataContext> - <ViewModel:BoardMemberViewModel/> - </Page.DataContext> - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - <StackPanel Margin="50" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="top" > - <StackPanel Width="650"> - <StackPanel> - <ListView ItemsSource="{Binding BoardMemberCatalogSingleton.Residents}" SelectedItem="{Binding NewResident, Mode=TwoWay}"></ListView> - </StackPanel> - </StackPanel> - <StackPanel Margin="50" Orientation="Horizontal" HorizontalAlignment="Right"> - <StackPanel Width="400" Margin="0,0,50,0"> - <StackPanel Orientation="Vertical" HorizontalAlignment="Left"> - <Image Source="../Assets/Person1.jpg"></Image> - <TextBlock Margin="0,10,0,10" Text="Resident Info" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold"/> - <TextBlock Margin="0,10,0,10" Text="Name"/> - <TextBox Text="{Binding NewResident.Name, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Last Name"/> - <TextBox Text="{Binding NewResident.LastName, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Birthdate"/> - <DatePicker HorizontalAlignment="Stretch" Date="{Binding NewResident.BirthDate, Mode=TwoWay}"/> - <TextBlock Margin="0,10,0,10" Text="Email Address"/> - <TextBox Text="{Binding NewResident.Email, Mode=TwoWay}" /> - <TextBlock Margin="0,10,0,10" Text="Phone Number"/> - <TextBox Text="{Binding NewResident.Phone, Mode=TwoWay}" /> - <StackPanel Orientation="Horizontal"> - <Button Margin="0,10,12,10" Content="Create" Width="125"/> - <Button Margin="0,10,0,10" Content="Delte" Width="125"/> - <Button Margin="13,10,0,10" Content="Update" Width="125"/> - </StackPanel> - </StackPanel> - </StackPanel> - </StackPanel> - </StackPanel> - - </Grid> -</Page> diff --git a/ApartmentManager/ApartmentManager/ViewModel/BmViewModel.cs b/ApartmentManager/ApartmentManager/ViewModel/BmViewModel.cs new file mode 100644 index 0000000..7a324a8 --- /dev/null +++ b/ApartmentManager/ApartmentManager/ViewModel/BmViewModel.cs @@ -0,0 +1,105 @@ +using System.ComponentModel; +using System.Runtime.CompilerServices; +using System.Windows.Input; +using ApartmentManager.Annotations; +using ApartmentManager.Common; +using ApartmentManager.Model; +using ApartmentManager.Singletons; +using ApartmentManager.Handler; + +namespace ApartmentManager.ViewModel +{ + public class BmViewModel : INotifyPropertyChanged + { + public BmSingleton BmSingleton { get; } = BmSingleton.Instance; + public BmHandler BmHandler { get; } + + public int[] FloorNumbers { get; } = new int[] { 0, 1, 2, 3, 4 }; + public int SelectedFloor { get; set; } + + public ICommand CreateApartmentCommand { get; } + public ICommand DeleteApartmentCommand { get; } + public ICommand UpdateApartmentCommand { get; } + public ICommand UploadApartmentPlanCommand { get; } + public ICommand ClearApartmentTemplateCommand { get; } + public ICommand GetApartmentsCommand { get; } + + public ICommand CreateUserCommand { get; } + public ICommand DeleteUserCommand { get; } + public ICommand UpdateUserCommand { get; } + public ICommand UploadUserPhotoCommand { get; } + public ICommand ClearUserTemplateCommand { get; } + + public ICommand CreateResidentCommand { get; } + public ICommand DeleteResidentCommand { get; } + public ICommand UpdateResidentCommand { get; } + public ICommand UploadResidentPhotoCommand { get; } + public ICommand ClearResidentTemplateCommand { get; } + + private static Apartment _apartmentTemplate = new Apartment(); + private static User _userTemplate = new User(); + private static Resident _residentTemplate = new Resident(); + + public BmViewModel() + { + BmHandler = new BmHandler(this); + + CreateApartmentCommand = new RelayCommand(BmHandler.CreateApartment); + DeleteApartmentCommand = new RelayCommand(BmHandler.DeleteApartment); + UpdateApartmentCommand = new RelayCommand(BmHandler.UpdateApartment); + UploadApartmentPlanCommand = new RelayCommand(BmHandler.UploadApartmentPlan); + ClearApartmentTemplateCommand = new RelayCommand(BmHandler.ClearApartmentTemplate); + GetApartmentsCommand = new RelayCommand(BmHandler.GetApartments); + + CreateUserCommand = new RelayCommand(BmHandler.CreateUser); + DeleteUserCommand = new RelayCommand(BmHandler.DeleteUser); + UpdateUserCommand = new RelayCommand(BmHandler.UpdateUser); + UploadUserPhotoCommand = new RelayCommand(BmHandler.UploadUserPhoto); + ClearUserTemplateCommand = new RelayCommand(BmHandler.ClearUserTemplate); + + CreateResidentCommand = new RelayCommand(BmHandler.CreateResident); + DeleteResidentCommand = new RelayCommand(BmHandler.DeleteResident); + UpdateResidentCommand = new RelayCommand(BmHandler.UpdateResident); + UploadResidentPhotoCommand = new RelayCommand(BmHandler.UploadResidentPhoto); + ClearResidentTemplateCommand = new RelayCommand(BmHandler.ClearResidentTemplate); + } + + public Apartment ApartmentTemplate + { + get => _apartmentTemplate; + set + { + _apartmentTemplate = value; + OnPropertyChanged(); + } + } + + public User UserTemplate + { + get => _userTemplate; + set + { + _userTemplate = value; + OnPropertyChanged(); + } + } + + public Resident ResidentTemplate + { + get => _residentTemplate; + set + { + _residentTemplate = value; + OnPropertyChanged(); + } + } + + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + } +} diff --git a/ApartmentManager/ApartmentManager/ViewModel/BoardMemberViewModel.cs b/ApartmentManager/ApartmentManager/ViewModel/BoardMemberViewModel.cs deleted file mode 100644 index db80503..0000000 --- a/ApartmentManager/ApartmentManager/ViewModel/BoardMemberViewModel.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Input; -using ApartmentManager.Annotations; -using ApartmentManager.Common; -using ApartmentManager.Model; -using ApartmentManager.Singletons; - -namespace ApartmentManager.ViewModel -{ - public class BoardMemberViewModel : INotifyPropertyChanged - { - public BoardMemberCatalogSingleton BoardMemberCatalogSingleton { get; set; } - - public UserSingleton UserSingleton { get; set; } - private User _newUser; - private Resident _newResident; - private Apartment _newApartment; - private Defect _newDefect; - - public static int ApartmentsNumber { get; set; } - public Handler.BoardMemberHandler BoardMemberHandler { get; set; } - - public Handler.BoardResidentsHandler BoardResidentsHandler { get; set; } - - public ICommand CreateApartmentCommand { get; set; } - public ICommand DeleteApartmentCommand { get; set; } - public ICommand UpdateApartmentCommand { get; set; } - - public ICommand DeleteDefectCommand { get; set; } - - public BoardMemberViewModel() - { - NewUser = new User(); - NewResident = new Resident(); - NewApartment = new Apartment(); - NewDefect = new Defect(); - - BoardResidentsHandler = new Handler.BoardResidentsHandler(this); - BoardMemberHandler = new Handler.BoardMemberHandler(this); - BoardMemberCatalogSingleton = BoardMemberCatalogSingleton.Instance; - UserSingleton = UserSingleton.Instance; - ApartmentsNumber = UserSingleton.CurrentUser.ApartmentId; - - CreateApartmentCommand = new RelayCommand(BoardMemberHandler.CreateApartment); - DeleteApartmentCommand = new RelayCommand(BoardMemberHandler.DeleteApartment); - UpdateApartmentCommand = new RelayCommand(BoardMemberHandler.UpdateApartment); - BoardMemberHandler.GetApartments(); - BoardResidentsHandler.GetApartmentsResidents(); - } - - public User NewUser - { - get => _newUser; - set - { - _newUser = value; - OnPropertyChanged(); - } - } - public Resident NewResident - { - get => _newResident; - set - { - _newResident = value; - OnPropertyChanged(); - } - } - - public Apartment NewApartment - { - get => _newApartment; - set - { - _newApartment = value; - OnPropertyChanged(); - } - } - - public Defect NewDefect - { - get => _newDefect; - set - { - _newDefect = value; - OnPropertyChanged(); - } - } - - public event PropertyChangedEventHandler PropertyChanged; - - [NotifyPropertyChangedInvocator] - protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - } -} diff --git a/ApartmentManager/ApartmentManager/ViewModel/LoginViewModel.cs b/ApartmentManager/ApartmentManager/ViewModel/LoginViewModel.cs index 0031061..82b7f97 100644 --- a/ApartmentManager/ApartmentManager/ViewModel/LoginViewModel.cs +++ b/ApartmentManager/ApartmentManager/ViewModel/LoginViewModel.cs @@ -1,106 +1,22 @@ using ApartmentManager.Common; using ApartmentManager.Handler; -using ApartmentManager.Model; -using ApartmentManager.View; -using System; using System.Windows.Input; -using Windows.UI.Popups; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using ApartmentManager.Singletons; namespace ApartmentManager.ViewModel { public class LoginViewModel { - public static string Username { get; set; } - public static string Password { get; set; } + public string Username { get; set; } + public string Password { get; set; } public ICommand LogInCommand { get; set; } public ICommand LogOutCommand { get; set; } + private LoginHandler loginHandler; public LoginViewModel() { - LogInCommand = new RelayCommand(LogIn); - LogOutCommand = new RelayCommand(LogOut); - } - - private void LogIn() - { - try - { - LoginHandler.LogIn(Username, Password); - NavigateToMainPage(); - } - catch(Exception ex) - { - var msg = new MessageDialog(ex.Message); - msg.ShowAsync(); - } - } - - private void LogOut() - { - LoginHandler.LogOut(); - NavigateToLoginPage(); - Username = null; - Password = null; - } - - private void NavigateToMainPage() - { - AppShell appShell = Window.Current.Content as AppShell; - - // Do not repeat app initialization when the Window already has content, - // just ensure that the window is active - if (appShell == null) - { - // Create a AppShell to act as the navigation context and navigate to the first page - appShell = new AppShell(); - - // Set the default language - appShell.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; - - } - - // Place our app shell in the current Window - Window.Current.Content = appShell; - - if (appShell.AppFrame.Content == null) - { - // When the navigation stack isn't restored, navigate to the first page - // suppressing the initial entrance animation. - if (UserSingleton.Instance.CurrentUser.IsBm) appShell.AppFrame.Navigate(typeof(BoardMembersMainPage)); - else - { - ApartmentViewModel asd = new ApartmentViewModel(); - asd.ApartmentHandler.GetApartmentResidents(); - asd.ApartmentHandler.GetApartment(); - asd.ApartmentHandler.GetApartmentDefects(); - appShell.AppFrame.Navigate(typeof(ApartmentPage)); - } - } - - // Ensure the current window is active - Window.Current.Activate(); - } - - private void NavigateToLoginPage() - { - Frame rootFrame = Window.Current.Content as Frame; - - // Do not repeat app initialization when the Window already has content, - // just ensure that the window is active - if (rootFrame == null) - { - // Create a Frame to act as the navigation context and navigate to the first page - rootFrame = new Frame(); - - // Place the frame in the current Window - Window.Current.Content = rootFrame; - } - - rootFrame.Navigate(typeof(LoginPage)); - Window.Current.Activate(); + loginHandler = new LoginHandler(this); + LogInCommand = new RelayCommand(loginHandler.LogIn); + LogOutCommand = new RelayCommand(loginHandler.LogOut); } } } |