Loading App.xaml +3 −1 Original line number Diff line number Diff line Loading @@ -11,8 +11,10 @@ <ui:ThemesDictionary Theme="Dark"> <Color x:Key="ExtraLightBlue">#FF36C0</Color> <SolidColorBrush x:Key="PinkJuanLogAccent" Color="#FFB52395"/> <SolidColorBrush x:Key="DarkRedJuanLog" Color="#5b1a1b"/> <SolidColorBrush x:Key="DarkYellowJuanLog" Color="#ce8810"/> <SolidColorBrush x:Key="ExtraDarkGreyJuanLog" Color="#FF1D1E1F"/> <FontFamily x:Key="SegoeFluentIcons">pack://application:,,,/;component/Fonts/#Segoe Fluent Icons</FontFamily> </ui:ThemesDictionary> <ui:ControlsDictionary> <conv:DateConverter x:Key="dateConverter"/> Loading JuanLog.csproj +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,14 @@ <Page Remove="NewFolder\**" /> </ItemGroup> <ItemGroup> <Compile Remove="Views\EditEntryView.xaml.cs" /> </ItemGroup> <ItemGroup> <Page Remove="Views\EditEntryView.xaml" /> </ItemGroup> <ItemGroup> <Content Include="Resources\JuanLogIco.ico" /> </ItemGroup> Loading Messages/ExerciseEntryChangedMessage.cs 0 → 100644 +19 −0 Original line number Diff line number Diff line using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using CommunityToolkit.Mvvm.Messaging.Messages; using JuanLog.Models; namespace JuanLog.Messages { public class ExerciseEntryChangedMessage: ValueChangedMessage<ExerciseEntry> { public ExerciseEntryChangedMessage(ExerciseEntry editedExercise) : base(editedExercise) { Debug.WriteLine("Exercise changed, sending the new-edited version"); } } } Models/Exercise.cs +6 −0 Original line number Diff line number Diff line Loading @@ -22,5 +22,11 @@ namespace JuanLog.Models var db = new JuanLogDBContext(); return await db.Exercises.ToListAsync(); } public static async Task<Exercise?> GetExerciseByName(string exerciseName) { var db = new JuanLogDBContext(); return await db.Exercises.Where(e => e.ExerciseName == exerciseName).FirstOrDefaultAsync(); } } } Models/ExerciseEntry.cs +68 −0 Original line number Diff line number Diff line using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.Metrics; using System.Linq; using System.Text; using System.Threading.Tasks; Loading @@ -19,13 +21,79 @@ namespace JuanLog.Models [ForeignKey("Exercises")] public string ExerciseName { get; set; } [ForeignKey("ExerciseCategories")] public int CategoryId { get; set; } public DateTime When { get; set; } public int Weight { get; set; } public int Sets { get; set; } public static async Task<List<ExerciseEntry>> GetAllUserEntries(User user) { var db = new JuanLogDBContext(); return await db.ExerciseEntries.Where(e => e.UserId == user.Id).ToListAsync(); } public static async Task<ExerciseEntry> AddEntry(ExerciseEntry toAdd) { var db = new JuanLogDBContext(); var addedEntry = db.ExerciseEntries.Add(toAdd); await db.SaveChangesAsync(); return addedEntry.Entity; } public static async Task RemoveEntry(ExerciseEntry removeEntry) { var db = new JuanLogDBContext(); try { List<Set> removeSets = await ExerciseEntry.GetEntrySets(removeEntry); foreach (Set set in removeSets) { db.SetTable.Remove(set); } await db.SaveChangesAsync(); db.ExerciseEntries.Remove(removeEntry); await db.SaveChangesAsync(); } catch { MessageBox.Show("Mazání neproběhlo úspěšně, promiň..."); } } public static async Task UpdateEntry(ExerciseEntry editedEntry) { var db = new JuanLogDBContext(); try { (await db.ExerciseEntries.Where(e => e.EntryId == editedEntry.EntryId).FirstAsync()).Weight = editedEntry.Weight; (await db.ExerciseEntries.Where(e => e.EntryId == editedEntry.EntryId).FirstAsync()).When = editedEntry.When; (await db.ExerciseEntries.Where(e => e.EntryId == editedEntry.EntryId).FirstAsync()).ExerciseName = editedEntry.ExerciseName; await db.SaveChangesAsync(); } catch { MessageBox.Show("Uložení se nezdařilo"); } } public static async Task<List<Set>> GetEntrySets(ExerciseEntry exerciseEntry) { var db = new JuanLogDBContext(); return await db.SetTable.Where(s => s.EntryId == exerciseEntry.EntryId).ToListAsync(); } public static async Task UpdateEntrySets(int exerciseEntryId, ObservableCollection<int> reps) { var db = new JuanLogDBContext(); foreach (Set set in db.SetTable.Where(s => s.EntryId == exerciseEntryId)) { db.SetTable.Remove(set); } await db.SaveChangesAsync(); foreach (int repNumber in reps) { db.SetTable.Add(new Set { Repetitions = repNumber, EntryId = exerciseEntryId }); } await db.SaveChangesAsync(); } } } Loading
App.xaml +3 −1 Original line number Diff line number Diff line Loading @@ -11,8 +11,10 @@ <ui:ThemesDictionary Theme="Dark"> <Color x:Key="ExtraLightBlue">#FF36C0</Color> <SolidColorBrush x:Key="PinkJuanLogAccent" Color="#FFB52395"/> <SolidColorBrush x:Key="DarkRedJuanLog" Color="#5b1a1b"/> <SolidColorBrush x:Key="DarkYellowJuanLog" Color="#ce8810"/> <SolidColorBrush x:Key="ExtraDarkGreyJuanLog" Color="#FF1D1E1F"/> <FontFamily x:Key="SegoeFluentIcons">pack://application:,,,/;component/Fonts/#Segoe Fluent Icons</FontFamily> </ui:ThemesDictionary> <ui:ControlsDictionary> <conv:DateConverter x:Key="dateConverter"/> Loading
JuanLog.csproj +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,14 @@ <Page Remove="NewFolder\**" /> </ItemGroup> <ItemGroup> <Compile Remove="Views\EditEntryView.xaml.cs" /> </ItemGroup> <ItemGroup> <Page Remove="Views\EditEntryView.xaml" /> </ItemGroup> <ItemGroup> <Content Include="Resources\JuanLogIco.ico" /> </ItemGroup> Loading
Messages/ExerciseEntryChangedMessage.cs 0 → 100644 +19 −0 Original line number Diff line number Diff line using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using CommunityToolkit.Mvvm.Messaging.Messages; using JuanLog.Models; namespace JuanLog.Messages { public class ExerciseEntryChangedMessage: ValueChangedMessage<ExerciseEntry> { public ExerciseEntryChangedMessage(ExerciseEntry editedExercise) : base(editedExercise) { Debug.WriteLine("Exercise changed, sending the new-edited version"); } } }
Models/Exercise.cs +6 −0 Original line number Diff line number Diff line Loading @@ -22,5 +22,11 @@ namespace JuanLog.Models var db = new JuanLogDBContext(); return await db.Exercises.ToListAsync(); } public static async Task<Exercise?> GetExerciseByName(string exerciseName) { var db = new JuanLogDBContext(); return await db.Exercises.Where(e => e.ExerciseName == exerciseName).FirstOrDefaultAsync(); } } }
Models/ExerciseEntry.cs +68 −0 Original line number Diff line number Diff line using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.Metrics; using System.Linq; using System.Text; using System.Threading.Tasks; Loading @@ -19,13 +21,79 @@ namespace JuanLog.Models [ForeignKey("Exercises")] public string ExerciseName { get; set; } [ForeignKey("ExerciseCategories")] public int CategoryId { get; set; } public DateTime When { get; set; } public int Weight { get; set; } public int Sets { get; set; } public static async Task<List<ExerciseEntry>> GetAllUserEntries(User user) { var db = new JuanLogDBContext(); return await db.ExerciseEntries.Where(e => e.UserId == user.Id).ToListAsync(); } public static async Task<ExerciseEntry> AddEntry(ExerciseEntry toAdd) { var db = new JuanLogDBContext(); var addedEntry = db.ExerciseEntries.Add(toAdd); await db.SaveChangesAsync(); return addedEntry.Entity; } public static async Task RemoveEntry(ExerciseEntry removeEntry) { var db = new JuanLogDBContext(); try { List<Set> removeSets = await ExerciseEntry.GetEntrySets(removeEntry); foreach (Set set in removeSets) { db.SetTable.Remove(set); } await db.SaveChangesAsync(); db.ExerciseEntries.Remove(removeEntry); await db.SaveChangesAsync(); } catch { MessageBox.Show("Mazání neproběhlo úspěšně, promiň..."); } } public static async Task UpdateEntry(ExerciseEntry editedEntry) { var db = new JuanLogDBContext(); try { (await db.ExerciseEntries.Where(e => e.EntryId == editedEntry.EntryId).FirstAsync()).Weight = editedEntry.Weight; (await db.ExerciseEntries.Where(e => e.EntryId == editedEntry.EntryId).FirstAsync()).When = editedEntry.When; (await db.ExerciseEntries.Where(e => e.EntryId == editedEntry.EntryId).FirstAsync()).ExerciseName = editedEntry.ExerciseName; await db.SaveChangesAsync(); } catch { MessageBox.Show("Uložení se nezdařilo"); } } public static async Task<List<Set>> GetEntrySets(ExerciseEntry exerciseEntry) { var db = new JuanLogDBContext(); return await db.SetTable.Where(s => s.EntryId == exerciseEntry.EntryId).ToListAsync(); } public static async Task UpdateEntrySets(int exerciseEntryId, ObservableCollection<int> reps) { var db = new JuanLogDBContext(); foreach (Set set in db.SetTable.Where(s => s.EntryId == exerciseEntryId)) { db.SetTable.Remove(set); } await db.SaveChangesAsync(); foreach (int repNumber in reps) { db.SetTable.Add(new Set { Repetitions = repNumber, EntryId = exerciseEntryId }); } await db.SaveChangesAsync(); } } }