This commit is contained in:
Adam 2024-06-26 11:06:33 +02:00
commit 9412a02d82
7 changed files with 150 additions and 40 deletions

View File

@ -88,15 +88,15 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Update="Microsoft.AspNetCore.Components.WebView.Maui" Version="8.0.60" /> <PackageReference Update="Microsoft.AspNetCore.Components.WebView.Maui" Version="8.0.61" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Update="Microsoft.Maui.Controls" Version="8.0.60" /> <PackageReference Update="Microsoft.Maui.Controls" Version="8.0.61" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Update="Microsoft.Maui.Controls.Compatibility" Version="8.0.60" /> <PackageReference Update="Microsoft.Maui.Controls.Compatibility" Version="8.0.61" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -19,6 +19,7 @@
@using AyCode.Core.Consts @using AyCode.Core.Consts
@using AyCode.Core @using AyCode.Core
@using AyCode.Core.Helpers @using AyCode.Core.Helpers
@using DevExpress.Data.Filtering
@using TIAM.Entities.Emails @using TIAM.Entities.Emails
@layout AdminLayout @layout AdminLayout
@inject IEnumerable<IAcLogWriterClientBase> LogWriters @inject IEnumerable<IAcLogWriterClientBase> LogWriters
@ -132,7 +133,7 @@
<CellDisplayTemplate> <CellDisplayTemplate>
@{ @{
TransferStatusModel keyField = Statuses.FirstOrDefault(x => x.StatusValue == Convert.ToInt16(context.Value)); TransferStatusModel keyField = Statuses.FirstOrDefault(x => x.StatusValue == (byte)context.Value)!;
string transferStatusText = keyField.StatusName; string transferStatusText = keyField.StatusName;
<text>@transferStatusText</text> <text>@transferStatusText</text>
} }
@ -149,22 +150,22 @@
</DxTabPage> </DxTabPage>
</DxTabs> </DxTabs>
</DetailRowTemplate> </DetailRowTemplate>
<EditFormTemplate Context="EditFormContext"> <EditFormTemplate Context="editFormContext">
@{ @{
var transfer2 = (Transfer)EditFormContext.EditModel; var transfer2 = (Transfer)editFormContext.EditModel;
} }
<DxFormLayout CssClass="w-100"> <DxFormLayout CssClass="w-100">
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.FirstName) ColSpanMd="6"> <DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.FirstName) ColSpanMd="6">
@EditFormContext.GetEditor("FirstName") @editFormContext.GetEditor("FirstName")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6"> <DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.LastName) ColSpanMd="6">
@EditFormContext.GetEditor("LastName") @editFormContext.GetEditor("LastName")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.DestinationAddress) ColSpanMd="6"> <DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.DestinationAddress) ColSpanMd="6">
@EditFormContext.GetEditor("ToAddress") @editFormContext.GetEditor("ToAddress")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.PickupAddress) ColSpanMd="6"> <DxFormLayoutItem Caption=@localizer.GetString(ResourceKeys.PickupAddress) ColSpanMd="6">
@EditFormContext.GetEditor("FromAddress") @editFormContext.GetEditor("FromAddress")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Trip date:" ColSpanMd="6"> <DxFormLayoutItem Caption="Trip date:" ColSpanMd="6">
@ -175,21 +176,28 @@
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Passengers:" ColSpanMd="6"> <DxFormLayoutItem Caption="Passengers:" ColSpanMd="6">
@EditFormContext.GetEditor("PassengerCount") @editFormContext.GetEditor("PassengerCount")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Paid:" ColSpanMd="6"> <DxFormLayoutItem Caption="Paid:" ColSpanMd="6">
@EditFormContext.GetEditor("Payed") @editFormContext.GetEditor("Payed")
</DxFormLayoutItem> </DxFormLayoutItem>
<DxFormLayoutItem Caption="Status:" ColSpanMd="6"> <DxFormLayoutItem Caption="Status:" ColSpanMd="6">
@EditFormContext.GetEditor("TransferStatusType") @editFormContext.GetEditor("TransferStatusType")
</DxFormLayoutItem> </DxFormLayoutItem>
</DxFormLayout> </DxFormLayout>
</EditFormTemplate> </EditFormTemplate>
<ToolbarTemplate>
<div>
<DxTagBox Data="@Statuses" Values="@SelectedCategories" @ref="_filterTag"
ValuesChanged="(IEnumerable<TransferStatusModel> values) => TagBox_ValuesChanged(values)"
ValueFieldName="StatusValue" TextFieldName="StatusName" NullText="Select category..."
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" aria-label="Select category" />
</div>
</ToolbarTemplate>
</TransferGrid> </TransferGrid>
</div> </div>
</DxTabPage> </DxTabPage>
@ -228,6 +236,10 @@
private bool _popupVisible; private bool _popupVisible;
private bool _autoCollapseDetailRow; private bool _autoCollapseDetailRow;
private TransferGrid _gridTransfer; private TransferGrid _gridTransfer;
private DxTagBox<TransferStatusModel, TransferStatusModel> _filterTag;
List<TransferStatusModel> SelectedCategories { get; set; }
= Statuses.Where(x => x.StatusValue != (byte)TransferStatusType.Finished && x.StatusValue != (byte)TransferStatusType.UserCanceled && x.StatusValue != (byte)TransferStatusType.AdminDenied).ToList();
public List<string> IgnoreList = public List<string> IgnoreList =
[ [
@ -240,17 +252,17 @@
"ContextId", "ContextId",
]; ];
public List<TransferStatusModel> Statuses { get; set; } = public static List<TransferStatusModel> Statuses { get; set; } =
[ [
new(Convert.ToInt16(TransferStatusType.OrderSubmitted), "Order submitted"), new(Convert.ToByte(TransferStatusType.OrderSubmitted), "Order submitted"),
new(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"), new(Convert.ToByte(TransferStatusType.OrderConfirmed), "Order confirmed"),
new(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"), new(Convert.ToByte(TransferStatusType.AssignedToDriver), "Assigned to driver"),
new(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"), new(Convert.ToByte(TransferStatusType.DriverConfirmed), "Driver confirmed"),
new(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"), new(Convert.ToByte(TransferStatusType.DriverEnRoute), "Driver enroute"),
new(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"), new(Convert.ToByte(TransferStatusType.PassengerPickup), "Passenger in car"),
new(Convert.ToInt16(TransferStatusType.Finished), "Finished"), new(Convert.ToByte(TransferStatusType.Finished), "Finished"),
new(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"), new(Convert.ToByte(TransferStatusType.UserCanceled), "User cancelled"),
new(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled") new(Convert.ToByte(TransferStatusType.AdminDenied), "Admin cancelled")
]; ];
private MessageWizardModel _messageWizardModel = new(); private MessageWizardModel _messageWizardModel = new();
@ -296,7 +308,7 @@
public async Task SubmitForm(object result) public async Task SubmitForm(object result)
{ {
var messageModel = result as MessageWizardModel; var messageModel = (result as MessageWizardModel)!;
messageModel.ContextId = _messageWizardModel.ContextId; messageModel.ContextId = _messageWizardModel.ContextId;
//messageModel.SenderId = sessionService.User.UserId; //messageModel.SenderId = sessionService.User.UserId;
@ -364,11 +376,34 @@
transferEditModel.ContactEmail = "your@email.address"; transferEditModel.ContactEmail = "your@email.address";
} }
void TagBox_ValuesChanged(IEnumerable<TransferStatusModel> newSelectedCategories)
{
SelectedCategories = newSelectedCategories.ToList();
var filterCriteria = SelectedCategories.Any()
? new InOperator("TransferStatusType", SelectedCategories.Select(c => c.StatusValue))
: null;
_gridTransfer.SetFieldFilterCriteria("TransferStatusType", filterCriteria);
}
private void DataSourceChanged(IList<Transfer> transfers) private void DataSourceChanged(IList<Transfer> transfers)
{ {
_logger.Info("DataSourceChanged called"); _logger.Info("DataSourceChanged called");
InitializeAppointments(transfers); InitializeAppointments(transfers);
if (SelectedCategories.Count > 0)
TagBox_ValuesChanged(SelectedCategories);
if(!SelectedCategories.Any())
SelectedCategories = [Statuses.FirstOrDefault(x => x.StatusValue == (byte)TransferStatusType.Finished)!];
// var filterTransferStatusType = Statuses.FirstOrDefault(x => x.StatusValue == (byte)TransferStatusType.Finished)!;
// if (SelectedCategories.All(x => x.StatusValue != filterTransferStatusType.StatusValue))
// SelectedCategories.Add(filterTransferStatusType);
} }
private void DataSourceItemChanging(GridDataItemChangingEventArgs<Transfer> args) private void DataSourceItemChanging(GridDataItemChangingEventArgs<Transfer> args)
@ -452,7 +487,7 @@
{ {
if (firstRender) if (firstRender)
{ {
_gridTransfer.ExpandDetailRow(0); //_gridTransfer.ExpandDetailRow(0);
} }
} }

View File

@ -114,7 +114,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
Logger.Debug($"{_gridLogName} OnDataSourceLoaded"); Logger.Debug($"{_gridLogName} OnDataSourceLoaded");
Reload(); Reload();
_dataSource.LoadItem(_dataSource.First().Id).Forget(); //_dataSource.LoadItem(_dataSource.First().Id).Forget();
return OnDataSourceChanged.InvokeAsync(_dataSource); return OnDataSourceChanged.InvokeAsync(_dataSource);
} }

View File

@ -14,7 +14,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazor.AnimateOnScroll" Version="1.1.0" /> <PackageReference Include="Blazor.AnimateOnScroll" Version="1.1.0" />
<PackageReference Include="BlazorAnimation" Version="2.2.0" /> <PackageReference Include="BlazorAnimation" Version="2.2.0" />
<PackageReference Include="DevExpress.Blazor" Version="23.2.3" /> <PackageReference Include="DevExpress.Blazor" Version="24.1.3" />
<PackageReference Include="MessagePack" Version="2.5.168" /> <PackageReference Include="MessagePack" Version="2.5.168" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.6" /> <PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.6" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="8.0.6" /> <PackageReference Include="Microsoft.Extensions.Localization" Version="8.0.6" />

View File

@ -0,0 +1,82 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazor.AnimateOnScroll" Version="1.1.0" />
<PackageReference Include="BlazorAnimation" Version="2.2.0" />
<PackageReference Include="DevExpress.Blazor" Version="23.2.3" />
<PackageReference Include="MessagePack" Version="2.5.168" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.6" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="8.0.6" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Aycode.Blazor\AyCode.Blazor.Components\AyCode.Blazor.Components.csproj" />
<ProjectReference Include="..\..\Aycode.Blazor\AyCode.Blazor.Models\AyCode.Blazor.Models.csproj" />
<ProjectReference Include="..\TIAM.Entities\TIAM.Entities.csproj" />
<ProjectReference Include="..\TIAM.Models\TIAM.Models.csproj" />
<ProjectReference Include="..\TIAMResources\TIAM.Resources.csproj" />
<ProjectReference Include="..\TIAMWebApp\Shared\TIAMWebApp.Shared.Application.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="AyCode.Core">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Core.dll</HintPath>
</Reference>
<Reference Include="AyCode.Core.Server">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Core.Server.dll</HintPath>
</Reference>
<Reference Include="AyCode.Entities">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Entities.dll</HintPath>
</Reference>
<Reference Include="AyCode.Interfaces">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.dll</HintPath>
</Reference>
<Reference Include="AyCode.Models">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Models.dll</HintPath>
</Reference>
<Reference Include="AyCode.Services">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Services.dll</HintPath>
</Reference>
<Reference Include="AyCode.Utils">
<HintPath>..\..\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\MyResources.Designer.cs">
<DependentUpon>MyResources.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\MyResources.resx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<LastGenOutput>MyResources.Designer.cs</LastGenOutput>
<Generator>PublicResXFileCodeGenerator</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Pages\User\Guides\" />
</ItemGroup>
<ItemGroup>
<Content Update="Pages\User\SysAdmins\AddressDetailGridComponent.razor">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</Content>
</ItemGroup>
</Project>

View File

@ -371,19 +371,12 @@ namespace TIAMWebApp.Server.Controllers
[Route(APIUrls.AddProductRouteName)] [Route(APIUrls.AddProductRouteName)]
[Tags("In-Progress", "Product")] [Tags("In-Progress", "Product")]
[SignalR(SignalRTags.AddProduct)] [SignalR(SignalRTags.AddProduct)]
public async Task<IActionResult> AddProduct([FromBody] Product product) public async Task<Product> AddProduct([FromBody] Product product)
{ {
_logger.Info(@"AddProduct called"); _logger.Info(@"AddProduct called");
if (product == null)
{
return BadRequest("Product is required");
}
else
{
var result = await adminDal.AddProductAsync(product); var result = await adminDal.AddProductAsync(product);
return Ok(product); return product;
}
} }
//[HttpPost] //[HttpPost]

View File

@ -2,10 +2,10 @@
{ {
public class TransferStatusModel public class TransferStatusModel
{ {
public int StatusValue { get; set; } public byte StatusValue { get; set; }
public string StatusName { get; set; } public string StatusName { get; set; }
public TransferStatusModel(int statusValue, string statusName) public TransferStatusModel(byte statusValue, string statusName)
{ {
StatusValue = statusValue; StatusValue = statusValue;
StatusName = statusName; StatusName = statusName;