diff --git a/MauiProgram.cs b/MauiProgram.cs index 91ff758..607b6a7 100644 --- a/MauiProgram.cs +++ b/MauiProgram.cs @@ -31,6 +31,7 @@ public static MauiApp CreateMauiApp() builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); + builder.Services.AddSingleton(); return builder.Build(); } diff --git a/Models/Team.cs b/Models/Team.cs new file mode 100644 index 0000000..211f750 --- /dev/null +++ b/Models/Team.cs @@ -0,0 +1,56 @@ +using SQLite; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace MauiApp1.Models +{ + internal class Team : INotifyPropertyChanged + { + [PrimaryKey, AutoIncrement] + public int id { get; set; } + private int maxSize; + public int MaxSize + { + get => maxSize; + set => SetField(ref maxSize, value); + } + + private string skillsRequired; + public string SkillsRequired + { + get => skillsRequired; + set => SetField(ref skillsRequired, value); + } + + private DateTime startDate; + public DateTime StartDate + { + get => startDate; + set => SetField(ref startDate, value); + } + + private DateTime endDate; + public DateTime EndDate + { + get => endDate; + set => SetField(ref endDate, value); + } + + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged(string propertyName) => + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + + protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = "") + { + if (EqualityComparer.Default.Equals(field, value)) return false; + field = value; + OnPropertyChanged(propertyName); + return true; + } + } +} diff --git a/Models/TeamMember.cs b/Models/TeamMember.cs new file mode 100644 index 0000000..e957439 --- /dev/null +++ b/Models/TeamMember.cs @@ -0,0 +1,49 @@ +using SQLite; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace MauiApp1.Models +{ + public class TeamMember : INotifyPropertyChanged + { + [PrimaryKey, AutoIncrement] + public int id { get; set; } + private string firstname; + public string Firstname + { + get => firstname; + set => SetField(ref firstname, value); + } + + private string lastname; + public string Lastname + { + get => lastname; + set => SetField(ref lastname, value); + } + + private string email; + public string Email + { + get => email; + set => SetField(ref email, value); + } + + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged(string propertyName) => + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + + protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = "") + { + if (EqualityComparer.Default.Equals(field, value)) return false; + field = value; + OnPropertyChanged(propertyName); + return true; + } + } +} diff --git a/Services/ITeamMemberService.cs b/Services/ITeamMemberService.cs new file mode 100644 index 0000000..d336f7d --- /dev/null +++ b/Services/ITeamMemberService.cs @@ -0,0 +1,17 @@ +using MauiApp1.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MauiApp1.Services +{ + public interface ITeamMemberService + { + Task> GetTeamMemberList(); + Task AddTeamMember(TeamMember teamMember); + Task DeleteTeamMember(TeamMember teamMember); + Task UpdateTeamMember(TeamMember teamMember); + } +} \ No newline at end of file diff --git a/Services/TeamMemberService.cs b/Services/TeamMemberService.cs new file mode 100644 index 0000000..3999c96 --- /dev/null +++ b/Services/TeamMemberService.cs @@ -0,0 +1,52 @@ +using MauiApp1.Data; +using MauiApp1.Models; +using SQLite; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MauiApp1.Services +{ + public class TeamMemberService : ITeamMemberService + { + private SQLiteAsyncConnection _dbConn; + /*! + Method that initiates connection to database. Will create the OrderStatus table if connected. + */ + private async Task SetUpDb() + { + if (_dbConn != null) + return; + + + _dbConn = new SQLiteAsyncConnection(DatabaseSettings.DBPath, DatabaseSettings.Flags); + await _dbConn.CreateTableAsync(); + } + + public async Task AddTeamMember(TeamMember teamMember) + { + await SetUpDb(); + return await _dbConn.InsertAsync(teamMember); + } + + public async Task DeleteTeamMember(TeamMember teamMember) + { + await SetUpDb(); + return await _dbConn.DeleteAsync(teamMember); + } + + public async Task> GetTeamMemberList() + { + await SetUpDb(); + return await _dbConn.Table().ToListAsync(); + } + + public async Task UpdateTeamMember(TeamMember teamMember) + { + await SetUpDb(); + return await _dbConn.UpdateAsync(teamMember); + } + } +} diff --git a/Tests/TeamMembersPageTests.cs b/Tests/TeamMembersPageTests.cs new file mode 100644 index 0000000..50f3790 --- /dev/null +++ b/Tests/TeamMembersPageTests.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MauiApp1.Tests +{ + internal class TeamMembersPageTests + { + } +} diff --git a/Views/TeamMember.xaml b/Views/TeamMember.xaml new file mode 100644 index 0000000..bd67738 --- /dev/null +++ b/Views/TeamMember.xaml @@ -0,0 +1,30 @@ + + + + + + + + + +