Van új és folytatható CheckLista
This commit is contained in:
@@ -13,6 +13,8 @@ namespace WorkFlowCheck.MAUI.DataLayer
|
||||
{
|
||||
private string DbPath { get; }
|
||||
|
||||
public DbSet<CheckListHeader> CheckListHeaders { get; set; }
|
||||
public DbSet<CheckListRow> CheckListRows { get; set; }
|
||||
public DbSet<CheckListTemplateHeader> CheckListTemplateHeaders { get; set; }
|
||||
public DbSet<CheckListTemplateRow> CheckListTemplateRows { get; set; }
|
||||
public DbSet<CheckPoint> CheckPoints { get; set; }
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WorkFlowCheck.MAUI.DataLayer.Entities
|
||||
{
|
||||
public class CheckListHeader
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int CheckListTemplateHeaderId { get; set; }
|
||||
public virtual CheckListTemplateHeader CheckListTemplateHeader { get; set; }
|
||||
public DateTime DateExecution { get; set; }
|
||||
public int UserId { get; set; }
|
||||
public string ShortName { get; set; } = null!;
|
||||
public string Description { get; set; } = null!;
|
||||
public string DocumentNumber { get; set; } = null!;
|
||||
public Guid GuidNumber { get; set; }
|
||||
public bool IsStorno { get; set; }
|
||||
public bool IsEditable { get; set; }
|
||||
|
||||
|
||||
public virtual ICollection<CheckListRow> CheckListRows { get; set; } = new List<CheckListRow>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WorkFlowCheck.MAUI.DataLayer.Entities
|
||||
{
|
||||
public class CheckListRow
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int CheckListHeaderId { get; set; }
|
||||
public virtual CheckListHeader CheckListHeader { get; set; } = null!;
|
||||
public int CheckListTemplateRowId { get; set; }
|
||||
public virtual CheckListTemplateRow CheckListTemplateRow { get; set; } = null!;
|
||||
public string Answer { get; set; } = null!;
|
||||
public byte[] Photo { get; set; } = null!;
|
||||
public Guid GuidNumber { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,11 @@ namespace WorkFlowCheck.MAUI.Mapper
|
||||
.ForMember(dest => dest.CheckListTemplateRowDTO, opt => opt.MapFrom(src => src.CheckListTemplateRows));
|
||||
CreateMap<CheckListTemplateRow, CheckListTemplateRowDTO>();
|
||||
CreateMap<CheckListTemplateRowDTO, CheckListTemplateRow>();
|
||||
|
||||
CreateMap<CheckListHeader, CheckListHeaderDTO>()
|
||||
.ForMember(dest => dest.CheckListRowDTO, opt => opt.MapFrom(src => src.CheckListRows));
|
||||
CreateMap<CheckListHeaderDTO, CheckListHeader>()
|
||||
.ForMember(dest => dest.CheckListRows, opt => opt.MapFrom(src => src.CheckListRowDTO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace WorkFlowCheck.MAUI
|
||||
builder.Services.AddSingleton<IUserService, UserService>();
|
||||
builder.Services.AddSingleton<ISyncService, SyncService>();
|
||||
builder.Services.AddSingleton<IBaseStockService, BaseStockService>();
|
||||
builder.Services.AddSingleton<ICheckListService, CheckListService>();
|
||||
|
||||
builder.Services.AddTransient<MainPage>();
|
||||
|
||||
|
||||
@@ -3,32 +3,62 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="WorkFlowCheck.MAUI.Pages.CheckList.CheckListPage"
|
||||
Title="Ellenőrzések">
|
||||
<Grid RowDefinitions="Auto, * , Auto" Padding="30,0">
|
||||
<Grid RowDefinitions="*,*" Padding="30,0">
|
||||
|
||||
<ScrollView Grid.Row="0">
|
||||
<Frame BorderColor="Gray" Padding="5" Margin="1" HasShadow="True">
|
||||
<VerticalStackLayout>
|
||||
<Label Text="Megkezdett ellenőrzések" FontAttributes="Bold" FontSize="Medium" HorizontalOptions="Center" />
|
||||
<CollectionView x:Name="CheckList">
|
||||
<CollectionView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Frame BorderColor="Gray" Padding="10" Margin="5" HasShadow="True" BackgroundColor="WhiteSmoke">
|
||||
<StackLayout>
|
||||
<Label Text="{Binding DocumentNumber}" FontSize="16" FontAttributes="Bold" />
|
||||
<Label Text="{Binding DateExecution}" FontSize="14" />
|
||||
<HorizontalStackLayout HorizontalOptions="End">
|
||||
<Button Text="Folytatás"
|
||||
Margin="5,0,0,0"
|
||||
BackgroundColor="Blue"
|
||||
Command="{Binding BindingContext.ContinueCommand, Source={x:Reference CheckList}}"
|
||||
CommandParameter="{Binding .}" />
|
||||
</HorizontalStackLayout>
|
||||
</StackLayout>
|
||||
</Frame>
|
||||
</DataTemplate>
|
||||
</CollectionView.ItemTemplate>
|
||||
</CollectionView>
|
||||
</VerticalStackLayout>
|
||||
</Frame>
|
||||
</ScrollView>
|
||||
|
||||
<ScrollView Grid.Row="1">
|
||||
<Frame BorderColor="Gray" Padding="5" Margin="1" HasShadow="True">
|
||||
<VerticalStackLayout>
|
||||
<Label Text="Megkezdett ellenőrzések" FontAttributes="Bold" FontSize="Medium" HorizontalOptions="Center" />
|
||||
|
||||
</VerticalStackLayout>
|
||||
</Frame>
|
||||
|
||||
</ScrollView>
|
||||
<ScrollView Grid.Row="2">
|
||||
<Frame BorderColor="Gray" Padding="5" Margin="1" HasShadow="True">
|
||||
<VerticalStackLayout>
|
||||
<Label Text="Új ellenőrzés" FontAttributes="Bold" FontSize="Medium" HorizontalOptions="Center" />
|
||||
<Button
|
||||
x:Name="ButtonNewCheck" Margin="5"
|
||||
BackgroundColor="Green"
|
||||
Text="Új indítása"
|
||||
SemanticProperties.Hint="Új indítása"
|
||||
Clicked="OnButtonNewCheck"
|
||||
HorizontalOptions="Fill" />
|
||||
<CollectionView x:Name="CheckListTemplate">
|
||||
<CollectionView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Frame BorderColor="Gray" Padding="10" Margin="5" HasShadow="True" BackgroundColor="WhiteSmoke">
|
||||
<StackLayout>
|
||||
<Label Text="{Binding ShortName}" FontSize="16" FontAttributes="Bold" />
|
||||
<Label Text="{Binding Description}" FontSize="14" />
|
||||
<HorizontalStackLayout HorizontalOptions="End">
|
||||
<Button Text="Új ellenőrzés"
|
||||
BackgroundColor="Green"
|
||||
Margin="5,0,0,0"
|
||||
Command="{Binding BindingContext.NewCommand, Source={x:Reference CheckListTemplate}}"
|
||||
CommandParameter="{Binding .}" />
|
||||
</HorizontalStackLayout>
|
||||
</StackLayout>
|
||||
</Frame>
|
||||
</DataTemplate>
|
||||
</CollectionView.ItemTemplate>
|
||||
</CollectionView>
|
||||
</VerticalStackLayout>
|
||||
</Frame>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</Grid>
|
||||
|
||||
</ContentPage>
|
||||
@@ -1,19 +1,56 @@
|
||||
using System.Windows.Input;
|
||||
using WorkFlowCheck.Common.DTO;
|
||||
using WorkFlowCheck.MAUI.Services.Interfaces;
|
||||
|
||||
namespace WorkFlowCheck.MAUI.Pages.CheckList;
|
||||
|
||||
public partial class CheckListPage : ContentPage
|
||||
{
|
||||
public CheckListPage()
|
||||
private readonly ICheckListService _checkListService;
|
||||
private readonly IUserService _userService;
|
||||
|
||||
public ICommand NewCommand { get; set; }
|
||||
public ICommand ContinueCommand { get; set; }
|
||||
|
||||
public CheckListPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
_checkListService = MauiProgram.ServiceProvider.GetRequiredService<ICheckListService>();
|
||||
_userService = MauiProgram.ServiceProvider.GetRequiredService<IUserService>();
|
||||
|
||||
}
|
||||
protected override bool OnBackButtonPressed()
|
||||
{
|
||||
Shell.Current.GoToAsync("//MainPage");
|
||||
return true;
|
||||
}
|
||||
public async void OnButtonNewCheck(object sender, EventArgs e)
|
||||
protected override async void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
NewCommand = new Command<CheckListTemplateHeaderDTO>(OnNewItem);
|
||||
ContinueCommand = new Command<CheckListHeaderDTO>(OnContinueItem);
|
||||
await LoadCheckListTemplate();
|
||||
await LoadCheckList();
|
||||
}
|
||||
private async void OnNewItem(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO)
|
||||
{
|
||||
|
||||
//await Navigation.PushAsync(new CheckPointEditPage(checkPointDTO));
|
||||
}
|
||||
private async void OnContinueItem(CheckListHeaderDTO checkListTemplateHeaderDTO)
|
||||
{
|
||||
|
||||
//await Navigation.PushAsync(new CheckPointEditPage(checkPointDTO));
|
||||
}
|
||||
private async Task LoadCheckListTemplate()
|
||||
{
|
||||
var userId = _userService.GetCurrentUser()?.Id;
|
||||
CheckListTemplate.ItemsSource = await _checkListService.GetCheckListTemplates(userId ?? 1);
|
||||
}
|
||||
private async Task LoadCheckList()
|
||||
{
|
||||
var userId = _userService.GetCurrentUser()?.Id;
|
||||
CheckList.ItemsSource = await _checkListService.GetCheckLists(userId ?? 1);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,9 +12,16 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
public class CheckListService : BaseService, ICheckListService
|
||||
{
|
||||
private readonly IUserService _userService;
|
||||
public CheckListService(HttpClient httpClient, IConfiguration configuration, AppDbContext dbContext, IMapper mapper, IUserService userService) : base(httpClient, configuration, dbContext, mapper)
|
||||
private readonly ISyncService _syncService;
|
||||
public CheckListService(HttpClient httpClient,
|
||||
IConfiguration configuration,
|
||||
AppDbContext dbContext,
|
||||
IMapper mapper,
|
||||
IUserService userService,
|
||||
ISyncService syncService) : base(httpClient, configuration, dbContext, mapper)
|
||||
{
|
||||
_userService = userService;
|
||||
_syncService = syncService;
|
||||
}
|
||||
|
||||
public async Task<ApiResponseDTO<CheckPointDTO>> GetCheckPoint(int checkPointId)
|
||||
@@ -39,7 +46,7 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
{
|
||||
await PrepareAuthenticatedRequestAsync();
|
||||
// Az API végpont meghatározása
|
||||
string endpoint = $"{_httpClient.BaseAddress}api/checklist/startnew";
|
||||
string endpoint = $"{_httpClient.BaseAddress}api/checklist/StartNewCheckList";
|
||||
|
||||
// HTTP POST kérés küldése
|
||||
ApiRequestDTO<CheckListTemplateHeaderDTO> request = new ApiRequestDTO<CheckListTemplateHeaderDTO>();
|
||||
@@ -69,5 +76,40 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<CheckListHeaderDTO>> GetCheckLists(int userId)
|
||||
{
|
||||
await _syncService.SyncDatas();
|
||||
|
||||
var retVal = new List<CheckListHeaderDTO>();
|
||||
try
|
||||
{
|
||||
var res = await _dbContext.CheckListHeaders.ToListAsync();
|
||||
retVal = _mapper.Map<List<CheckListHeaderDTO>>(res);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
public async Task<List<CheckListTemplateHeaderDTO>> GetCheckListTemplates(int userId)
|
||||
{
|
||||
await _syncService.SyncDatas();
|
||||
|
||||
var retVal = new List<CheckListTemplateHeaderDTO>();
|
||||
try
|
||||
{
|
||||
var res = await _dbContext.CheckListTemplateHeaders.ToListAsync();
|
||||
retVal = _mapper.Map<List<CheckListTemplateHeaderDTO>>(res);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,5 +11,9 @@ namespace WorkFlowCheck.MAUI.Services.Interfaces
|
||||
{
|
||||
Task<ApiResponseDTO<CheckListHeaderDTO>> StartNew(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO);
|
||||
Task<ApiResponseDTO<CheckPointDTO>> GetCheckPoint(int checkPointId);
|
||||
|
||||
|
||||
Task<List<CheckListHeaderDTO>> GetCheckLists(int userId);
|
||||
Task<List<CheckListTemplateHeaderDTO>> GetCheckListTemplates(int userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,10 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
{
|
||||
public class SyncService : BaseService, ISyncService
|
||||
{
|
||||
public SyncService(HttpClient httpClient, IConfiguration configuration, AppDbContext dbContext, IMapper mapper) : base(httpClient, configuration, dbContext, mapper)
|
||||
private readonly IUserService _userService;
|
||||
public SyncService(HttpClient httpClient, IConfiguration configuration, AppDbContext dbContext, IMapper mapper, IUserService userService) : base(httpClient, configuration, dbContext, mapper)
|
||||
{
|
||||
|
||||
_userService = userService;
|
||||
}
|
||||
public async Task SyncDatas()
|
||||
{
|
||||
@@ -22,6 +23,7 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
await SyncLocations();
|
||||
await SyncEquipments();
|
||||
await SyncCheckListTemplates();
|
||||
await SyncCheckList();
|
||||
}
|
||||
public async Task SyncCheckPoints()
|
||||
{
|
||||
@@ -119,7 +121,8 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
{
|
||||
await PrepareAuthenticatedRequestAsync();
|
||||
// Az API végpont meghatározása
|
||||
string endpoint = $"{_httpClient.BaseAddress}api/Sync/GetAllCheckListTemplateHeader";
|
||||
var userId = _userService.GetCurrentUser()?.Id;
|
||||
string endpoint = $"{_httpClient.BaseAddress}api/Sync/GetAllCheckListTemplateHeader/{userId}";
|
||||
|
||||
// HTTP GET kérés küldése
|
||||
var response = await _httpClient.GetFromJsonAsync<ApiResponseDTO<List<CheckListTemplateHeaderDTO>>>(endpoint);
|
||||
@@ -143,5 +146,41 @@ namespace WorkFlowCheck.MAUI.Services
|
||||
|
||||
}
|
||||
}
|
||||
public async Task SyncCheckList()
|
||||
{
|
||||
try
|
||||
{
|
||||
await PrepareAuthenticatedRequestAsync();
|
||||
if (_userService == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Az API végpont meghatározása
|
||||
var userId = _userService.GetCurrentUser()?.Id;
|
||||
string endpoint = $"{_httpClient.BaseAddress}api/Sync/GetAllCheckListHeader/{userId}";
|
||||
|
||||
// HTTP GET kérés küldése
|
||||
|
||||
var response = await _httpClient.GetFromJsonAsync<ApiResponseDTO<List<CheckListHeaderDTO>>>(endpoint);
|
||||
if (response != null)
|
||||
{
|
||||
if (response.IsSuccess)
|
||||
{
|
||||
var checkListHeaderList = await _dbContext.CheckListHeaders.ToListAsync();
|
||||
var missingItems = response.Data.Where(f => !checkListHeaderList.Any(s => s.GuidNumber == f.GuidNumber)).ToList();
|
||||
|
||||
var missingCheckListHeaders = _mapper.Map<List<CheckListHeader>>(missingItems);
|
||||
|
||||
_dbContext.CheckListHeaders.AddRange(missingCheckListHeaders);
|
||||
await _dbContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Hiba visszaadása
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user