210425
This commit is contained in:
parent
f349bf3d57
commit
46b171eab8
13
.idea/.idea.presence/.idea/.gitignore
vendored
Normal file
13
.idea/.idea.presence/.idea/.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Rider ignored files
|
||||||
|
/modules.xml
|
||||||
|
/contentModel.xml
|
||||||
|
/.idea.presence.iml
|
||||||
|
/projectSettingsUpdater.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
10
.idea/.idea.presence/.idea/avalonia.xml
Normal file
10
.idea/.idea.presence/.idea/avalonia.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AvaloniaProject">
|
||||||
|
<option name="projectPerEditor">
|
||||||
|
<map>
|
||||||
|
<entry key="Presence.Desktop/Views/PresenceView.axaml" value="Presence.Desktop/Presence.Desktop.csproj" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
4
.idea/.idea.presence/.idea/encodings.xml
Normal file
4
.idea/.idea.presence/.idea/encodings.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
8
.idea/.idea.presence/.idea/indexLayout.xml
Normal file
8
.idea/.idea.presence/.idea/indexLayout.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/.idea.presence/.idea/vcs.xml
Normal file
6
.idea/.idea.presence/.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -21,8 +21,10 @@ using System.Threading.Tasks;
|
|||||||
.AddDbContext<RemoteDatabaseContext>()
|
.AddDbContext<RemoteDatabaseContext>()
|
||||||
.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>()
|
.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>()
|
||||||
.AddSingleton<IUserRepository, SQLUserRepositoryImpl>()
|
.AddSingleton<IUserRepository, SQLUserRepositoryImpl>()
|
||||||
|
.AddTransient<IPresenceRepository, SQLPresenceRepositoryImpl>()
|
||||||
.AddTransient<IGroupUseCase, GroupUseCase>()
|
.AddTransient<IGroupUseCase, GroupUseCase>()
|
||||||
.AddTransient<IUserUseCase, UserUseCase>()
|
.AddTransient<IUserUseCase, UserUseCase>()
|
||||||
|
.AddTransient<IPresenceUseCase, PresenceUseCase>()
|
||||||
.AddTransient<GroupViewModel>();
|
.AddTransient<GroupViewModel>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,10 +10,13 @@ using System.Threading.Tasks;
|
|||||||
{
|
{
|
||||||
public class PresencePresenter
|
public class PresencePresenter
|
||||||
{
|
{
|
||||||
public int UserGuid { get; set; }
|
public Guid UserGuid { get; set; }
|
||||||
public bool IsAttedance {get; set; }
|
public bool IsAttedance {get; set; }
|
||||||
public DateOnly Date {get; set; }
|
public DateOnly Date {get; set; }
|
||||||
public int LessonNumber {get; set; }
|
public int LessonNumber {get; set; }
|
||||||
public UserPresenter? user { get; set; }
|
public UserPresenter? user { get; set; }
|
||||||
|
|
||||||
|
//для будущего решения
|
||||||
|
public string AttendanceStatus { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,24 +1,152 @@
|
|||||||
|
// using System.Reactive;
|
||||||
|
// using ReactiveUI;
|
||||||
|
|
||||||
|
// namespace Presence.Desktop.ViewModels;
|
||||||
|
|
||||||
|
// public class PresenceViewModel: ViewModelBase, IRoutableViewModel
|
||||||
|
// {
|
||||||
|
// public string? UrlPathSegment { get; }
|
||||||
|
// public IScreen HostScreen { get; }
|
||||||
|
|
||||||
|
// public ReactiveCommand<Unit, Unit> GoBackCommand { get; }
|
||||||
|
|
||||||
|
// public PresenceViewModel(IScreen hostScreen)
|
||||||
|
// {
|
||||||
|
// HostScreen = hostScreen;
|
||||||
|
|
||||||
|
// GoBackCommand = ReactiveCommand.Create(() =>
|
||||||
|
// {
|
||||||
|
// HostScreen.Router.Navigate.Execute(new StartViewModel(HostScreen));
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Reactive;
|
using System.Reactive;
|
||||||
using ReactiveUI;
|
using ReactiveUI;
|
||||||
|
using Demo.Domain.Models;
|
||||||
|
using Demo.Domain.UseCase;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using Presence.Desktop.Models;
|
||||||
|
|
||||||
namespace Presence.Desktop.ViewModels;
|
namespace Presence.Desktop.ViewModels
|
||||||
|
|
||||||
public class PresenceViewModel: ViewModelBase, IRoutableViewModel
|
|
||||||
{
|
{
|
||||||
public string? UrlPathSegment { get; }
|
public class PresenceViewModel : ViewModelBase, IRoutableViewModel
|
||||||
public IScreen HostScreen { get; }
|
|
||||||
|
|
||||||
public ReactiveCommand<Unit, Unit> GoBackCommand { get; }
|
|
||||||
|
|
||||||
public PresenceViewModel(IScreen hostScreen)
|
|
||||||
{
|
{
|
||||||
HostScreen = hostScreen;
|
public string? UrlPathSegment { get; }
|
||||||
|
public IScreen HostScreen { get; }
|
||||||
|
|
||||||
GoBackCommand = ReactiveCommand.Create(() =>
|
public ReactiveCommand<Unit, Unit> GoBackCommand { get; }
|
||||||
|
public ReactiveCommand<Unit, Unit> FilterAttendanceCommand { get; }
|
||||||
|
|
||||||
|
public ObservableCollection<PresencePresenter> AttendanceRecords { get; set; } = new();
|
||||||
|
public ObservableCollection<Group> Groups { get; set; } = new();
|
||||||
|
public ObservableCollection<string> AttendanceTypes { get; set; } = new()
|
||||||
{
|
{
|
||||||
HostScreen.Router.Navigate.Execute(new StartViewModel(HostScreen));
|
"Присутствовал",
|
||||||
});
|
"Отсутствовал",
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
|
private Group? _selectedGroup;
|
||||||
|
public Group? SelectedGroup
|
||||||
|
{
|
||||||
|
get => _selectedGroup;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
this.RaiseAndSetIfChanged(ref _selectedGroup, value);
|
||||||
|
FilterAttendanceRecords();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private DateTime? _selectedDate;
|
||||||
|
public DateTime? SelectedDate
|
||||||
|
{
|
||||||
|
get => _selectedDate;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
this.RaiseAndSetIfChanged(ref _selectedDate, value);
|
||||||
|
FilterAttendanceRecords();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly IGroupUseCase _groupUseCase;
|
||||||
|
private readonly IPresenceUseCase _presenceUseCase;
|
||||||
|
|
||||||
|
public PresenceViewModel(IScreen hostScreen, IGroupUseCase groupUseCase, IPresenceUseCase presenceUseCase)
|
||||||
|
{
|
||||||
|
HostScreen = hostScreen;
|
||||||
|
_groupUseCase = groupUseCase;
|
||||||
|
_presenceUseCase = presenceUseCase;
|
||||||
|
|
||||||
|
GoBackCommand = ReactiveCommand.Create(() =>
|
||||||
|
{
|
||||||
|
HostScreen.Router.Navigate.Execute(new StartViewModel(HostScreen));
|
||||||
|
});
|
||||||
|
|
||||||
|
FilterAttendanceCommand = ReactiveCommand.Create(FilterAttendanceRecords);
|
||||||
|
|
||||||
|
LoadGroups();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadGroups()
|
||||||
|
{
|
||||||
|
Groups.Clear();
|
||||||
|
var groups = _groupUseCase.GetAllGroups();
|
||||||
|
foreach (var group in groups)
|
||||||
|
{
|
||||||
|
Groups.Add(group);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FilterAttendanceRecords()
|
||||||
|
{
|
||||||
|
if (SelectedGroup == null || SelectedDate == null)
|
||||||
|
{
|
||||||
|
AttendanceRecords.Clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dateOnly = DateOnly.FromDateTime(SelectedDate.Value);
|
||||||
|
|
||||||
|
var records = _presenceUseCase.GetPresenceByGroupByTime(
|
||||||
|
SelectedGroup.ID,
|
||||||
|
dateOnly);
|
||||||
|
|
||||||
|
AttendanceRecords.Clear();
|
||||||
|
foreach (var record in records)
|
||||||
|
{
|
||||||
|
// Преобразуем значение IsAttedance в строку прямо здесь
|
||||||
|
var attendanceStatus = record.IsAttedance ? "Был на уроке" : "Не был на уроке";
|
||||||
|
|
||||||
|
AttendanceRecords.Add(new PresencePresenter
|
||||||
|
{
|
||||||
|
UserGuid = record.User.Guid,
|
||||||
|
IsAttedance = record.IsAttedance, // оставляем bool в модели
|
||||||
|
Date = record.Date,
|
||||||
|
LessonNumber = record.LessonNumber,
|
||||||
|
user = new UserPresenter
|
||||||
|
{
|
||||||
|
Name = record.User.FIO,
|
||||||
|
Guid = record.User.Guid
|
||||||
|
},
|
||||||
|
AttendanceStatus = attendanceStatus // добавляем строковое представление
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Новый метод для обработки изменения типа посещаемости
|
||||||
|
public void OnAttendanceTypeChanged(PresencePresenter presence, string newType)
|
||||||
|
{
|
||||||
|
presence.IsAttedance = newType == "Присутствовал";
|
||||||
|
|
||||||
|
if (_presenceUseCase.UpdateAttendance(presence.LessonNumber, presence.Date, presence.UserGuid, presence.IsAttedance))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Изменен тип посещаемости для {presence.user.Name}: {newType}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Не удалось обновить тип посещаемости для {presence.user.Name}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -30,7 +30,12 @@ namespace Presence.Desktop.ViewModels
|
|||||||
|
|
||||||
OpenPresenceCommand = ReactiveCommand.Create(() =>
|
OpenPresenceCommand = ReactiveCommand.Create(() =>
|
||||||
{
|
{
|
||||||
HostScreen.Router.Navigate.Execute(new PresenceViewModel(HostScreen));
|
// HostScreen.Router.Navigate.Execute(new PresenceViewModel(HostScreen));
|
||||||
|
HostScreen.Router.Navigate.Execute(new PresenceViewModel(
|
||||||
|
HostScreen,
|
||||||
|
App.ServiceProvider.GetRequiredService<IGroupUseCase>(),
|
||||||
|
App.ServiceProvider.GetRequiredService<IPresenceUseCase>()
|
||||||
|
));
|
||||||
});
|
});
|
||||||
|
|
||||||
GoBackCommand = ReactiveCommand.Create(() =>
|
GoBackCommand = ReactiveCommand.Create(() =>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<UserControl xmlns="https://github.com/avaloniaui"
|
<!-- <UserControl xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
@ -12,4 +12,39 @@
|
|||||||
<TextBlock Text="Welcome to Avalonia!" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
<TextBlock Text="Welcome to Avalonia!" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
|
</UserControl> -->
|
||||||
|
|
||||||
|
<UserControl xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:vm="clr-namespace:Presence.Desktop.ViewModels"
|
||||||
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="600"
|
||||||
|
x:Class="Presence.Desktop.Views.PresenceView"
|
||||||
|
x:DataType="vm:PresenceViewModel">
|
||||||
|
<DockPanel>
|
||||||
|
<Button Content="Назад" Command="{Binding GoBackCommand}" Foreground="Black" DockPanel.Dock="Top" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10" />
|
||||||
|
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="10" DockPanel.Dock="Top" Margin="10">
|
||||||
|
<ComboBox ItemsSource="{Binding Groups}" SelectedItem="{Binding SelectedGroup}" Width="200" PlaceholderText="Выберите группу">
|
||||||
|
<ComboBox.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<TextBlock Text="{Binding Name}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</ComboBox.ItemTemplate>
|
||||||
|
</ComboBox>
|
||||||
|
<Calendar Name="AttendanceCalendar" SelectionMode="SingleDate" SelectedDate="{Binding SelectedDate, Mode=TwoWay}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<DataGrid Name="AttendanceDataGrid" DockPanel.Dock="Top" AutoGenerateColumns="False" ItemsSource="{Binding AttendanceRecords}" CanUserSortColumns="True" Margin="10">
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="Дата" Binding="{Binding Date}" />
|
||||||
|
<DataGridTextColumn Header="Номер урока" Binding="{Binding LessonNumber}" />
|
||||||
|
<DataGridTextColumn Header="ФИО" Binding="{Binding user.Name}" />
|
||||||
|
<DataGridTextColumn Header="Тип посещаемости" Binding="{Binding AttendanceStatus}" />
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
|
||||||
|
<Button Content="Назад" DockPanel.Dock="Bottom" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10" Command="{Binding GoBackCommand}" />
|
||||||
|
</DockPanel>
|
||||||
</UserControl>
|
</UserControl>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -13,10 +13,10 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Presence.Desktop")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Presence.Desktop")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e09931058bc7801d9456d8f4488e86baf26d74f6")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f349bf3d57cd40fa9b39af1fb9638bb2d06d5e1a")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Presence.Desktop")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Presence.Desktop")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Presence.Desktop")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Presence.Desktop")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
// Создано классом WriteCodeFragment MSBuild.
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
99f0d759dbf1f913c86207dbab807cce741df668439588646904c6e36ffd544e
|
136b784a7a15debbab2c7cf7c9a0094ae85013348cf4adc6096c7f0441f9342b
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
Presence.Desktop/obj/project.packagespec.json
Normal file
1
Presence.Desktop/obj/project.packagespec.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
"restore":{"projectUniqueName":"/Users/rinchi/VSCodeProjects/presence/Presence.Desktop/Presence.Desktop.csproj","projectName":"Presence.Desktop","projectPath":"/Users/rinchi/VSCodeProjects/presence/Presence.Desktop/Presence.Desktop.csproj","outputPath":"/Users/rinchi/VSCodeProjects/presence/Presence.Desktop/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/rinchi/VSCodeProjects/presence/data/data.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/data/data.csproj"},"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Avalonia":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Desktop":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Diagnostics":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Fonts.Inter":{"target":"Package","version":"[11.2.1, )"},"Avalonia.ReactiveUI":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Themes.Fluent":{"target":"Package","version":"[11.2.1, )"},"Microsoft.Extensions.DependencyInjection":{"target":"Package","version":"[9.0.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}}
|
1
Presence.Desktop/obj/rider.project.model.nuget.info
Normal file
1
Presence.Desktop/obj/rider.project.model.nuget.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17328689157743786
|
1
Presence.Desktop/obj/rider.project.restore.info
Normal file
1
Presence.Desktop/obj/rider.project.restore.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17328689157743786
|
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("console_ui")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("console_ui")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e09931058bc7801d9456d8f4488e86baf26d74f6")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f349bf3d57cd40fa9b39af1fb9638bb2d06d5e1a")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("console_ui")]
|
[assembly: System.Reflection.AssemblyProductAttribute("console_ui")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("console_ui")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("console_ui")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
@ -1 +1 @@
|
|||||||
8053c4a8786132c74ba12c8d4f8a0de9ea8ccaca0ae2ad56a4cb9adca8604fb7
|
53d5d99cffbccec1949b12632bb3f905251e95f71043b6a8a8cddd133131207d
|
||||||
|
Binary file not shown.
1
console_ui/obj/project.packagespec.json
Normal file
1
console_ui/obj/project.packagespec.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
"restore":{"projectUniqueName":"/Users/rinchi/VSCodeProjects/presence/console_ui/console_ui.csproj","projectName":"console_ui","projectPath":"/Users/rinchi/VSCodeProjects/presence/console_ui/console_ui.csproj","outputPath":"/Users/rinchi/VSCodeProjects/presence/console_ui/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/rinchi/VSCodeProjects/presence/data/data.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/data/data.csproj"},"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj"},"/Users/rinchi/VSCodeProjects/presence/ui/ui.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/ui/ui.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.Extensions.DependencyInjection":{"target":"Package","version":"[8.0.1, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}}
|
1
console_ui/obj/rider.project.model.nuget.info
Normal file
1
console_ui/obj/rider.project.model.nuget.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304695031615875
|
1
console_ui/obj/rider.project.restore.info
Normal file
1
console_ui/obj/rider.project.restore.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304695031615875
|
@ -14,7 +14,7 @@ namespace Demo.Data.RemoteData.RemoteDataBase
|
|||||||
optionsBuilder.UseNpgsql("Host=localhost;" +
|
optionsBuilder.UseNpgsql("Host=localhost;" +
|
||||||
"Port=5432;" +
|
"Port=5432;" +
|
||||||
"Username=postgres;" +
|
"Username=postgres;" +
|
||||||
"Password=1234;" +
|
"Password=5432;" +
|
||||||
"Database=postgres");
|
"Database=postgres");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ namespace Demo.Data.Repository
|
|||||||
bool DeletePresenceByUser(Guid userGuid);
|
bool DeletePresenceByUser(Guid userGuid);
|
||||||
bool DeletePresenceByRange(DateOnly start, DateOnly end);
|
bool DeletePresenceByRange(DateOnly start, DateOnly end);
|
||||||
void IsAttedance(int firstLesson, int lastLesson, DateOnly date, Guid UserGuid);
|
void IsAttedance(int firstLesson, int lastLesson, DateOnly date, Guid UserGuid);
|
||||||
|
void UpdateAttendance(int lessonNumber, DateOnly date, Guid userGuid, bool isAttedance);
|
||||||
List<PresenceLocalEntity> GeneratePresence(List<PresenceLocalEntity> presenceLocalEntities);
|
List<PresenceLocalEntity> GeneratePresence(List<PresenceLocalEntity> presenceLocalEntities);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -95,5 +95,21 @@ namespace Demo.Data.Repository
|
|||||||
_remoteDatabaseContext.SaveChanges();
|
_remoteDatabaseContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void UpdateAttendance(int lessonNumber, DateOnly date, Guid userGuid, bool isAttedance)
|
||||||
|
{
|
||||||
|
var presenceToUpdate = _remoteDatabaseContext.PresenceDaos
|
||||||
|
.FirstOrDefault(x => x.UserGuid == userGuid && x.LessonNumber == lessonNumber && x.Date == date);
|
||||||
|
|
||||||
|
if (presenceToUpdate != null)
|
||||||
|
{
|
||||||
|
presenceToUpdate.IsAttedance = isAttedance;
|
||||||
|
_remoteDatabaseContext.SaveChanges();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new Exception("Attendance record not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -13,10 +13,10 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("data")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("data")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e09931058bc7801d9456d8f4488e86baf26d74f6")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f349bf3d57cd40fa9b39af1fb9638bb2d06d5e1a")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("data")]
|
[assembly: System.Reflection.AssemblyProductAttribute("data")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("data")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("data")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
// Создано классом WriteCodeFragment MSBuild.
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
96f9dba9e152933168206a00324b7f1d8f74e630cc6cff00fa36fa150d6facd7
|
f7efb7b95a8d07ee86502b0342aca04b601c607ebeb937dfb4ed012b3d9c3ade
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
data/obj/project.packagespec.json
Normal file
1
data/obj/project.packagespec.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
"restore":{"projectUniqueName":"/Users/rinchi/VSCodeProjects/presence/data/data.csproj","projectName":"data","projectPath":"/Users/rinchi/VSCodeProjects/presence/data/data.csproj","outputPath":"/Users/rinchi/VSCodeProjects/presence/data/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.10, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.10, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[8.0.10, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}}
|
1
data/obj/rider.project.model.nuget.info
Normal file
1
data/obj/rider.project.model.nuget.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304693393445690
|
1
data/obj/rider.project.restore.info
Normal file
1
data/obj/rider.project.restore.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304693393445690
|
@ -17,5 +17,6 @@ namespace Demo.Domain.UseCase
|
|||||||
bool IsAttedance(int firstLesson, int lastLesson, DateOnly date, Guid UserGuid);
|
bool IsAttedance(int firstLesson, int lastLesson, DateOnly date, Guid UserGuid);
|
||||||
bool GeneratePresence(int firstLesson, int lastLesson, int groupID, DateOnly date);
|
bool GeneratePresence(int firstLesson, int lastLesson, int groupID, DateOnly date);
|
||||||
bool GeneratePresenceWeek(int firstLesson, int lastLesson, int groupID, DateOnly date);
|
bool GeneratePresenceWeek(int firstLesson, int lastLesson, int groupID, DateOnly date);
|
||||||
|
bool UpdateAttendance(int lessonNumber, DateOnly date, Guid userGuid, bool isAttedance);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -242,5 +242,11 @@ namespace Demo.Domain.UseCase
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool UpdateAttendance(int lessonNumber, DateOnly date, Guid userGuid, bool isAttedance)
|
||||||
|
{
|
||||||
|
_repositoryPresenceImpl.UpdateAttendance(lessonNumber, date, userGuid, isAttedance);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -13,10 +13,10 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("domain")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("domain")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e09931058bc7801d9456d8f4488e86baf26d74f6")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f349bf3d57cd40fa9b39af1fb9638bb2d06d5e1a")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("domain")]
|
[assembly: System.Reflection.AssemblyProductAttribute("domain")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("domain")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("domain")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
||||||
// Создано классом WriteCodeFragment MSBuild.
|
// Generated by the MSBuild WriteCodeFragment class.
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
f1d70c0a78a9408777622323328940398500abe86ee7f209a489d7b3dde2e88e
|
4751b10857a21805172e22182c641f6f38ba829403d9b024151286eb7a358839
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
domain/obj/project.packagespec.json
Normal file
1
domain/obj/project.packagespec.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
"restore":{"projectUniqueName":"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj","projectName":"domain","projectPath":"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj","outputPath":"/Users/rinchi/VSCodeProjects/presence/domain/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/rinchi/VSCodeProjects/presence/data/data.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/data/data.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"ClosedXML":{"target":"Package","version":"[0.104.1, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}}
|
1
domain/obj/rider.project.model.nuget.info
Normal file
1
domain/obj/rider.project.model.nuget.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304695015079442
|
1
domain/obj/rider.project.restore.info
Normal file
1
domain/obj/rider.project.restore.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304695015079442
|
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("presence_api")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("presence_api")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e09931058bc7801d9456d8f4488e86baf26d74f6")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f349bf3d57cd40fa9b39af1fb9638bb2d06d5e1a")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("presence_api")]
|
[assembly: System.Reflection.AssemblyProductAttribute("presence_api")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("presence_api")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("presence_api")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
@ -1 +1 @@
|
|||||||
53ebebffa72175e477c3e89e7f1bac4a1986d89da1205920d472457851054eb4
|
9af4ff139b15efcf57df6042f240fed37bde6a756ad86ee0cd310d39cda9482e
|
||||||
|
Binary file not shown.
1
presence_api/obj/project.packagespec.json
Normal file
1
presence_api/obj/project.packagespec.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
"restore":{"projectUniqueName":"/Users/rinchi/VSCodeProjects/presence/presence_api/presence_api.csproj","projectName":"presence_api","projectPath":"/Users/rinchi/VSCodeProjects/presence/presence_api/presence_api.csproj","outputPath":"/Users/rinchi/VSCodeProjects/presence/presence_api/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.8, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.4.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}}
|
1
presence_api/obj/rider.project.model.nuget.info
Normal file
1
presence_api/obj/rider.project.model.nuget.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17309956270493816
|
1
presence_api/obj/rider.project.restore.info
Normal file
1
presence_api/obj/rider.project.restore.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17309956270493816
|
@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("ui")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("ui")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e09931058bc7801d9456d8f4488e86baf26d74f6")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f349bf3d57cd40fa9b39af1fb9638bb2d06d5e1a")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("ui")]
|
[assembly: System.Reflection.AssemblyProductAttribute("ui")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("ui")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("ui")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
@ -1 +1 @@
|
|||||||
c0c82d21139afdd6aabf25e83b1808deccf76aafb567111f614d27ab4faa9fff
|
fd64b8ebd88e77e42cc08e37840d8b4eebac03ea57f9c8e564fe05c340564333
|
||||||
|
Binary file not shown.
1
ui/obj/project.packagespec.json
Normal file
1
ui/obj/project.packagespec.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
"restore":{"projectUniqueName":"/Users/rinchi/VSCodeProjects/presence/ui/ui.csproj","projectName":"ui","projectPath":"/Users/rinchi/VSCodeProjects/presence/ui/ui.csproj","outputPath":"/Users/rinchi/VSCodeProjects/presence/ui/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj":{"projectPath":"/Users/rinchi/VSCodeProjects/presence/domain/domain.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.402/PortableRuntimeIdentifierGraph.json"}}
|
1
ui/obj/rider.project.model.nuget.info
Normal file
1
ui/obj/rider.project.model.nuget.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304695031617678
|
1
ui/obj/rider.project.restore.info
Normal file
1
ui/obj/rider.project.restore.info
Normal file
@ -0,0 +1 @@
|
|||||||
|
17304695031617678
|
Loading…
Reference in New Issue
Block a user