diff --git a/TIAMSharedUI/Pages/User/Admin.razor b/TIAMSharedUI/Pages/User/Admin.razor index b294fd67..7297643c 100644 --- a/TIAMSharedUI/Pages/User/Admin.razor +++ b/TIAMSharedUI/Pages/User/Admin.razor @@ -1,4 +1,5 @@ @page "/user/admin" +@using Microsoft.AspNetCore.Authorization @using TIAMSharedUI.Pages.User.SysAdmins @using TIAMSharedUI.Shared @using TIAMWebApp.Shared.Application.Models; @@ -7,7 +8,8 @@ @inject IPopulationStructureDataProvider DataProvider @inject ISupplierService SupplierService @inject IUserDataService UserDataService -Transfer +@attribute [Authorize] +Administration

Dashboard

diff --git a/TIAMSharedUI/Pages/User/MyServiceProviders.razor b/TIAMSharedUI/Pages/User/MyServiceProviders.razor index ed1bdad9..5cb0e33f 100644 --- a/TIAMSharedUI/Pages/User/MyServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/MyServiceProviders.razor @@ -3,6 +3,7 @@ @using TIAM.Resources @using TIAMSharedUI.Pages.Components @using TIAMSharedUI.Shared +@using TIAMWebApp.Shared.Application.Interfaces @using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Core.Loggers @@ -10,6 +11,8 @@ @layout AdminLayout @inject IAcLogWriterClientBase BrowserConsoleLogWriter @inject IStringLocalizer localizer +@inject ISessionService SessionService +@inject IServiceProviderDataService ServiceProviderDataService

Properties

@@ -57,7 +60,7 @@ *@ LogWriters +@inject IStringLocalizer localizer +@inject IWizardProcessor wizardProcessor +@inject IServiceProviderDataService serviceProviderDataService +@inject ISessionService sessionService +@inject DevAdminSignalClient devAdminSignalClient; +Admin - Companies + +
+

Company management

+

Manage transfers here!

+
+ + + + + + + + + + + +
+
+
+ +
+ + + + +
+
+ +
+ + + + + + + + + + + + @* + + @{ + var keyField = context.Value; + + var keyItem = (TiamServiceProvider)context.DataItem; + string buttonText = "Contact"; + + } + + *@ + + + + + + + + @{ + var transfer2 = (Transfer)EditFormContext.EditModel; + } + + + @EditFormContext.GetEditor("Name") + + + + + + + + + +
+
+ + +
+ + + + + + + + + + +
+
+
+ + + + + +
+ + +
+
+ +
+
+ +
+
+ + +@code { + private LoggerClient _logger; + + //public Transfer myModel = new Transfer(); + + public List ServiceProviderDataList { get; set; } + + bool PopupVisible { get; set; } + public List IgnoreList = + [ + "ReceiverEmailAddress", + "ReceiverFullName", + "ReceiverId", + "SenderEmailAddress", + "SenderFullName", + "SenderId", + "ContextId", + ]; + + public List Statuses { get; set; } = + [ + new(Convert.ToInt16(TransferStatusType.OrderSubmitted), "Order submitted"), + new(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"), + new(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"), + new(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"), + new(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"), + new(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"), + new(Convert.ToInt16(TransferStatusType.Finished), "Finished"), + new(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"), + new(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled") + ]; + + private MessageWizardModel _messageWizardModel = new(); + + public List AppointmentModels { get; set; } + + DateTime StartDate { get; set; } = DateTime.Today; + DxSchedulerDataStorage _dataStorage = new(); + + + void SendMail(TiamServiceProvider item) + { + _logger.Info($"Sending mail to {item.OwnerId}, {item.Id}"); + _messageWizardModel.ReceiverId = Guid.Parse(""); + _messageWizardModel.ContextId = item.Id; + _messageWizardModel.SenderEmailAddress = ""; + _messageWizardModel.ReceiverEmailAddress = ""; + _messageWizardModel.ReceiverFullName = ""; + PopupVisible = true; + } + + void CancelCreateClick() + { + + PopupVisible = false; + } + void EulaPopupClosed() + { + //cancel clicked + + } + void EulaPopupClosing(PopupClosingEventArgs args) + { + //myModel = new TransferWizardModel(); + _messageWizardModel = new MessageWizardModel(); + } + + //----------------------------------------------------------------------------------- + + + public async Task SubmitForm(object result) + { + var messageModel = result as MessageWizardModel; + messageModel.ContextId = _messageWizardModel.ContextId; + //messageModel.SenderId = sessionService.User.UserId; + + string FormatEmailContent() + { + return $@" + + +

Dear {messageModel.SenderFullName},

+

{messageModel.Content}:

+

Best regards,
Tour I Am team

+ + "; + } + messageModel.Content = FormatEmailContent(); + + _logger.Info(messageModel.Content); + var email = await wizardProcessor.ProcessWizardAsync(result.GetType(), messageModel); + + _logger.Info($"Submitted nested form: {result.GetType().FullName}"); + } + + void Grid_CustomizeElement(GridCustomizeElementEventArgs e) + { + if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") == 5) + { + e.CssClass = "bg-important"; + } + else if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") > 5 && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") < 35) + { + e.CssClass = "bg-attention"; + } + else if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") == 35) + { + e.CssClass = "bg-finished"; + } + else if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") > 35) + { + e.CssClass = "bg-cancel"; + } + if (e.ElementType == GridElementType.HeaderCell) + { + e.Style = "background-color: rgba(0, 0, 0, 0.08)"; + e.CssClass = "header-bold"; + } + } + + void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) + { + if (!e.IsNew) return; + + var transferEditModel = (Transfer)e.EditModel; //TODO not valid cast + transferEditModel.Id = Guid.NewGuid(); + transferEditModel.ToAddress = "Where to?"; + transferEditModel.FromAddress = "From where?"; + transferEditModel.Appointment = DateTime.UtcNow.AddDays(3); + transferEditModel.PassengerCount = 1; + transferEditModel.FirstName = "John"; + transferEditModel.LastName = "Doe"; + transferEditModel.ContactPhone = "+00000000000"; + transferEditModel.ContactEmail = "your@email.address"; + } + + async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) + { + bool success = false; + if (e.IsNew) + { + //add new orderData to orderData array + _logger.Info("New orderData added"); + //await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); + } + else + { + _logger.Info("orderData updated at id " + ((TiamServiceProvider)e.EditModel).Id); + + success = await serviceProviderDataService.UpdateServiceProviderAsync((TiamServiceProvider)e.EditModel); + + } + //get transfer from TransferData by Id + + // foreach (var transferToModify in (List)TransferData) + // { + // myModel = (Transfer)e.EditModel; + + // if (transferToModify.Id == myModel.Id) + // { + // //transferToModify.Driver = myModel.Driver; + // } + // } + + if (success) + { + //TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J. + await UpdateDataAsync(); + } + } + + async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) + { + //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); + //remove orderData from orderData array + _logger.Info("orderData deleted"); + //await UpdateDataAsync(); + } + + async Task UpdateDataAsync() + { + ServiceProviderDataList = await serviceProviderDataService.GetServiceProvidersByOwnerIdAsync(); + _logger.Info("orderData grid refreshed"); + } + + protected override async Task OnInitializedAsync() + { + _logger = new LoggerClient(LogWriters.ToArray()); + + devAdminSignalClient.OnMessageReceived += (messageTag, message) => + { + if (messageTag == SignalRTags.PostTransfersAsync) + { + var json = message?.MessagePackTo(ContractlessStandardResolver.Options); + + InitializeDataSources(json?.JsonTo>() ?? []); + StateHasChanged(); + } + }; + + await devAdminSignalClient.Send("", SignalRTags.GetTransfersAsync, null); + //InitializeDataSources(await transferDataService.GetTransfersAsync()); + + base.OnInitialized(); + } + + private void InitializeDataSources(List transferDataList) + { + TransferDataList = transferDataList; + AppointmentModels = new List(TransferDataList.Count); + + foreach (var transfer in TransferDataList) + { + // var bnm = DataStorage.CreateAppointmentItem(); + // bnm.Start = transfer.Appointment; + // bnm.Description = $"{transfer.FullName}, {transfer.ToAddress}"; + // bnm.Location = transfer.FromAddress; + // bnm.Subject = "Simple transfer"; + + AppointmentModels.Add(new AppointmentModel { StartDate = transfer.Appointment, EndDate=transfer.Appointment.AddMinutes(30), Description = $"{transfer.FullName}, {transfer.ToAddress}", Location = transfer.FromAddress, Caption = "Simple transfer" }); + } + + _dataStorage = new DxSchedulerDataStorage + { + AppointmentMappings = new DxSchedulerAppointmentMappings() + { + Type = "AppointmentType", + Start = "StartDate", + End = "EndDate", + Subject = "Caption", + AllDay = "AllDay", + Location = "Location", + Description = "Description", + LabelId = "Label", + StatusId = "Status", + RecurrenceInfo = "Recurrence" + }, + + AppointmentsSource = AppointmentModels + }; + } + + void ColumnChooserButton_Click() + { + Grid2.ShowColumnChooser(); + } + + IGrid Grid2 { get; set; } + object MasterGridData { get; set; } + bool AutoCollapseDetailRow { get; set; } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + Grid2.ExpandDetailRow(0); + } + } + void AutoCollapseDetailRow_Changed(bool newValue) + { + AutoCollapseDetailRow = newValue; + if (!newValue) return; + + Grid2.BeginUpdate(); + Grid2.CollapseAllDetailRows(); + Grid2.ExpandDetailRow(0); + Grid2.EndUpdate(); + } +} + + + + + + + } \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 6abec512..af9e9986 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -98,7 +98,7 @@ namespace TIAMWebApp.Server.Controllers } //17. - [AllowAnonymous] + [Authorize] [HttpPost] [Route(APIUrls.GetServiceProvidersByOwnerIdRouteName)] [Tags("Finished", "ServiceProvider")] diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index eba20467..cce91efb 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -70,12 +70,17 @@ namespace TIAMWebApp.Shared.Application.Services //17. public async Task?> GetPropertiesByOwnerIdAsync(Guid id) { - var url = APIUrls.GetServiceProvidersByOwnerId; + var url = $"{Setting.ApiBaseUrl}/{APIUrls.GetServiceProvidersByOwnerId}"; var response = await http.PostAsJsonAsync(url, id); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); - _logger.Debug(result.FirstOrDefault().Value); + string resultString = ""; + foreach (var item in result) + { + resultString += item.Value + ", "; + } + _logger.Debug(resultString); return result; } else