Driver history grouped by date,
Hotel more clean transfer list Hotel create transfer reload button after saved last transfer Save message first then send message in email Create guest user if email is not in userDb, set referral Id fixed Some more little cleanups
This commit is contained in:
parent
6bfd97beba
commit
0662bb77a7
|
|
@ -31,7 +31,7 @@ else
|
|||
<div class="card cw-480">
|
||||
<div class="card-header text-center py-3">
|
||||
<h4>Details</h4>
|
||||
<DxButton Click="StartEditing" RenderStyle="ButtonRenderStyle.Primary">Edit</DxButton>
|
||||
@* <DxButton Click="StartEditing" RenderStyle="ButtonRenderStyle.Primary">Create new</DxButton> *@
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@CreateCardView()
|
||||
|
|
@ -190,6 +190,8 @@ else
|
|||
editor.AddAttribute(j++, "Date", property.GetValue(Data));
|
||||
editor.AddAttribute(j++, "DateExpression", lambda);
|
||||
editor.AddAttribute(j++, "CssClass", "form-field");
|
||||
editor.AddAttribute(j++, "TimeSectionVisible", true);
|
||||
editor.AddAttribute(j++, "TimeSectionScrollPickerFormat", "tt h m");
|
||||
editor.AddAttribute(j++, "DateChanged", EventCallback.Factory.Create<DateTime>(this, str => { property.SetValue(Data, str); }));
|
||||
editor.CloseComponent();
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -128,6 +128,38 @@
|
|||
</DxScheduler>
|
||||
</div>
|
||||
</DxTabPage>
|
||||
|
||||
<DxTabPage Text="History">
|
||||
<div class="d-flex flex-column mb-4 pb-2">
|
||||
|
||||
<TransferDetailGrid @ref="_gridTransfer"
|
||||
Logger="_logger"
|
||||
GetAllMessageTag="SignalRTags.GetTransfersByUserProductMappingId"
|
||||
SignalRClient="AdminSignalRClient"
|
||||
ContextIds="new object[] {driverId}"
|
||||
CustomizeElement="Grid_CustomizeElement"
|
||||
ShowGroupPanel="true"
|
||||
CustomGroup="Grid_CustomGroup"
|
||||
CustomizeGroupValueDisplayText="Grid_CustomizeGroupValueDisplayText"
|
||||
EditMode="GridEditMode.EditForm"
|
||||
ColumnResizeMode="GridColumnResizeMode.NextColumn"
|
||||
AllowSelectRowByClick="false"
|
||||
PageSize="13"
|
||||
ShowFilterRow="true">
|
||||
|
||||
<Columns>
|
||||
<DxGridDataColumn FieldName="Id" ShowInColumnChooser="AcDomain.IsDeveloperVersion" Visible="AcDomain.IsDeveloperVersion" DisplayFormat="N" />
|
||||
<DxGridDataColumn FieldName="Appointment" SortOrder="GridColumnSortOrder.Descending" GroupIndex="0" GroupInterval="GridColumnGroupInterval.Custom" DisplayFormat="g" Width="125" />
|
||||
<DxGridDataColumn FieldName="OrderId" Caption="Order" SortIndex="1" SortOrder="GridColumnSortOrder.Descending" Width="70" />
|
||||
<DxGridDataColumn FieldName="FromAddress" />
|
||||
<DxGridDataColumn FieldName="ToAddress" />
|
||||
<DxGridDataColumn FieldName="Created" DisplayFormat="g" Width="125" Visible="false" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
|
||||
</Columns>
|
||||
|
||||
</TransferDetailGrid>
|
||||
</div>
|
||||
</DxTabPage>
|
||||
|
||||
</DxTabs>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -143,7 +175,7 @@
|
|||
[Parameter] public Guid DriverId { get; set; }
|
||||
private Guid driverId;
|
||||
private LoggerClient<DriverManageTransfers> _logger;
|
||||
|
||||
private TransferGrid _gridTransfer;
|
||||
private bool _popupVisible;
|
||||
|
||||
private List<Transfer>? transfers = [];
|
||||
|
|
@ -153,6 +185,14 @@
|
|||
AccordionExpandMode ExpandMode { get; set; } = AccordionExpandMode.SingleOrNone;
|
||||
AccordionExpandCollapseAction ExpandCollapseAction { get; set; } = AccordionExpandCollapseAction.HeaderClick;
|
||||
|
||||
private MessageWizardModel _messageWizardModel = new();
|
||||
|
||||
public List<AppointmentModel> AppointmentModels { get; set; } = null!;
|
||||
|
||||
DateTime StartDate { get; set; } = DateTime.Today;
|
||||
DxSchedulerDataStorage _dataStorage = new();
|
||||
|
||||
|
||||
public List<string> IgnoreList =
|
||||
[
|
||||
"ReceiverEmailAddress",
|
||||
|
|
@ -177,15 +217,71 @@
|
|||
new(Convert.ToByte(TransferStatusType.AdminDenied), "Admin cancelled")
|
||||
];
|
||||
|
||||
void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (e.ElementType == GridElementType.HeaderCell)
|
||||
{
|
||||
e.Style = "background-color: rgba(0, 0, 0, 0.08)";
|
||||
e.CssClass = "header-bold";
|
||||
}
|
||||
|
||||
if (e.ElementType != GridElementType.DataRow) return;
|
||||
|
||||
private MessageWizardModel _messageWizardModel = new();
|
||||
var transferStatus = e.Grid?.GetRowValue(e.VisibleIndex, "TransferStatusType");
|
||||
if (transferStatus == null) return;
|
||||
|
||||
public List<AppointmentModel> AppointmentModels { get; set; } = null!;
|
||||
var transferStatusByte = (byte)transferStatus;
|
||||
|
||||
DateTime StartDate { get; set; } = DateTime.Today;
|
||||
DxSchedulerDataStorage _dataStorage = new();
|
||||
switch (transferStatusByte)
|
||||
{
|
||||
case 5:
|
||||
e.CssClass = "bg-important";
|
||||
break;
|
||||
case > 5 and < 35:
|
||||
e.CssClass = "bg-attention";
|
||||
break;
|
||||
case 35:
|
||||
e.CssClass = "bg-finished";
|
||||
break;
|
||||
case > 35:
|
||||
e.CssClass = "bg-cancel";
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error($"Grid_CustomizeElement; {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
void Grid_CustomGroup(GridCustomGroupEventArgs e)
|
||||
{
|
||||
if (e.FieldName == "Appointment")
|
||||
{
|
||||
e.SameGroup = Grid_CompareColumnValues(((DateTime)e.Value1).Date, ((DateTime)e.Value2).Date);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
bool Grid_CompareColumnValues(DateTime value1, DateTime value2)
|
||||
{
|
||||
if (value1 == value2)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
void Grid_CustomizeGroupValueDisplayText(GridCustomizeGroupValueDisplayTextEventArgs e)
|
||||
{
|
||||
if (e.FieldName == "Appointment")
|
||||
{
|
||||
|
||||
string displayText = ((DateTime)e.Value).Date.ToString();
|
||||
e.DisplayText = displayText;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void RefreshComponent()
|
||||
{
|
||||
StateHasChanged();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
@page "/user/createAndManageTransfer"
|
||||
@using AyCode.Core.Consts
|
||||
@using AyCode.Core.Helpers
|
||||
@using TIAM.Entities.Products
|
||||
@using TIAM.Entities.ServiceProviders
|
||||
@using TIAM.Entities.Transfers
|
||||
@using TIAM.Services
|
||||
@using TIAMSharedUI.Pages.Components.EditComponents
|
||||
|
|
@ -7,6 +10,7 @@
|
|||
@using AyCode.Services.Loggers
|
||||
@using TIAMWebApp.Shared.Application.Interfaces;
|
||||
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
|
||||
@using TIAMWebApp.Shared.Application.Models.PageModels
|
||||
@using TIAMWebApp.Shared.Application.Services
|
||||
@using TIAMWebApp.Shared.Application.Utility
|
||||
@layout AdminLayout
|
||||
|
|
@ -15,6 +19,7 @@
|
|||
@inject IUserDataService UserDataService
|
||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||
@inject AdminSignalRClient _adminSignalRClient
|
||||
@inject NavigationManager navManager
|
||||
|
||||
<PageTitle>Create transfer</PageTitle>
|
||||
|
||||
|
|
@ -44,6 +49,11 @@
|
|||
<DynamicEditForm Data="Data" isEditing="true" IgnoreReflection="TransferIgnorList" OnSubmit="SubmitForm"></DynamicEditForm>
|
||||
</div>
|
||||
|
||||
<div class="row py-3">
|
||||
|
||||
<DxButton RenderStyle="ButtonRenderStyle.Primary" Click="@Reload" Visible="@isReloadVisible">Reload</DxButton>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -52,7 +62,7 @@
|
|||
|
||||
@code {
|
||||
private LoggerClient<CreateAndManageTransfer> _logger;
|
||||
private TransferWizardModel Data;
|
||||
private TransferWizardModel Data = new();
|
||||
private List<Product> Hotels = new List<Product>();
|
||||
private Product SelectedHotel;
|
||||
public List<string> TransferIgnorList = new List<string>
|
||||
|
|
@ -67,7 +77,7 @@
|
|||
nameof(TransferWizardModel.ReferralId),
|
||||
nameof(TransferWizardModel.Price)
|
||||
};
|
||||
|
||||
private bool isReloadVisible = false;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
|
|
@ -92,11 +102,60 @@
|
|||
var valami = ((TransferWizardModel)result).CopyToTransfer();
|
||||
valami.Id = Guid.NewGuid();
|
||||
valami.ProductId = SelectedHotel.Id;
|
||||
var user = await UserDataService.GetUserByEmailAsync(valami.ContactEmail);
|
||||
if (user != null && user.Id != Guid.Empty)
|
||||
{
|
||||
//user exists already
|
||||
var userDetail = await UserDataService.GetUserDetailByIdAsync(user.Id);
|
||||
valami.ReferralId = userDetail.UserDto.RefferalId;
|
||||
valami.UserId = userDetail.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
//create a guest user and set referralId
|
||||
var registration = new RegistrationModel();
|
||||
//TODO: Refractor to userDataService
|
||||
|
||||
// var random = new Random();
|
||||
// const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
// var password = new string(Enumerable.Repeat(chars, 10)
|
||||
// .Select(s => s[random.Next(s.Length)]).ToArray());
|
||||
|
||||
var password = AcCharsGenerator.NewPassword(AcConst.MinPasswordLength, 16);
|
||||
|
||||
registration.Email = valami.ContactEmail;
|
||||
registration.PhoneNumber = valami.ContactPhone;
|
||||
registration.Password = password;
|
||||
//get list with one member!
|
||||
var productOwner = await _adminSignalRClient.GetByIdAsync<List<Company>>(SignalRTags.GetCompaniesById, SelectedHotel.ServiceProviderId);
|
||||
|
||||
registration.ReferralId = productOwner[0].AffiliateId;
|
||||
|
||||
var createResult = await UserDataService.CreateGuestUser(registration);
|
||||
if(createResult.isSuccess)
|
||||
{
|
||||
if (createResult.user != null)
|
||||
{
|
||||
valami.UserId = createResult.user.Id;
|
||||
}
|
||||
}
|
||||
_logger.Info("New user created added");
|
||||
}
|
||||
//valami.ProductId = SessionService.User.UserId; //TODO ProductID!
|
||||
// await WizardProcessor.ProcessWizardAsync<TransferDestinationWizardModel>(result.GetType(), result);
|
||||
|
||||
var saveResult = await _adminSignalRClient.PostDataAsync<Transfer>(SignalRTags.AddTransfer, valami);
|
||||
_logger.Info($"Submitted nested form: {result.GetType().FullName}, {valami.ToAddress}, {valami.FromAddress}, {valami.ProductId}");
|
||||
_logger.Info($"Submitted form: {result.GetType().FullName}, {valami.ToAddress}, {valami.FromAddress}, {valami.ProductId}");
|
||||
isReloadVisible = true;
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
Data = new TransferWizardModel();
|
||||
isReloadVisible = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -102,26 +102,14 @@
|
|||
</NavLink>
|
||||
}
|
||||
</CellDisplayTemplate>
|
||||
</DxGridDataColumn>
|
||||
|
||||
<DxGridDataColumn FieldName="Revenue" Caption="Revenue" Width="70" CaptionAlignment="GridTextAlignment.Center" />
|
||||
</DxGridDataColumn>
|
||||
<DxGridDataColumn FieldName="FullName" />
|
||||
<DxGridDataColumn FieldName="ContactPhone" Width="120" />
|
||||
<DxGridDataColumn FieldName="ContactEmail" Width="120">
|
||||
</DxGridDataColumn>
|
||||
<DxGridDataColumn FieldName="PaymentId" DisplayFormat="N" Visible="false" />
|
||||
<DxGridDataColumn Caption="Paid" FieldName="Paid" Width="75" TextAlignment="GridTextAlignment.Center" CaptionAlignment="GridTextAlignment.Center" />
|
||||
<DxGridDataColumn FieldName="TransferStatusType" Caption="Status" SortIndex="0" Width="120" SortOrder="GridColumnSortOrder.Ascending" SortMode="GridColumnSortMode.Value">
|
||||
<CellDisplayTemplate>
|
||||
@{
|
||||
|
||||
TransferStatusModel keyField = Statuses.FirstOrDefault(x => x.StatusValue == (byte)context.Value)!;
|
||||
string transferStatusText = keyField.StatusName;
|
||||
<text>@transferStatusText</text>
|
||||
}
|
||||
</CellDisplayTemplate>
|
||||
</DxGridDataColumn>
|
||||
<DxGridDataColumn FieldName="ReferralId" DisplayFormat="N" Visible="false" />
|
||||
</DxGridDataColumn>
|
||||
|
||||
|
||||
<DxGridDataColumn FieldName="ReferralId" DisplayFormat="N" Visible="true" />
|
||||
<DxGridDataColumn FieldName="Comment" Caption="Comment" />
|
||||
<DxGridDataColumn FieldName="Created" DisplayFormat="g" Width="125" Visible="false" CaptionAlignment="GridTextAlignment.Center" TextAlignment="GridTextAlignment.Center" />
|
||||
</Columns>
|
||||
|
|
@ -143,9 +131,7 @@
|
|||
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-row mb-4 pb-2">
|
||||
<h4> Some <span class="small text-muted"> conclusion </span></h4>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="card-footer py-2 px-4">
|
||||
<div class="d-flex justify-content-between">
|
||||
|
|
|
|||
|
|
@ -31,15 +31,13 @@
|
|||
<div class=" col-12">
|
||||
<Animation Effect="@Effect.FadeIn" Speed="@Speed.Fast" Delay="@TimeSpan.FromMilliseconds(250)">
|
||||
<div class="card">
|
||||
<div class="d-flex flex-column mb-4 pb-2">
|
||||
<div class="align-self-end pl-2 pb-2">
|
||||
<DxButton Text="Column Chooser"
|
||||
RenderStyle="ButtonRenderStyle.Secondary"
|
||||
IconCssClass="btn-column-chooser"
|
||||
Click="ColumnChooserButton_Click" />
|
||||
</div>
|
||||
<div class="d-flex flex-column mb-4 pb-2">
|
||||
|
||||
<CarGridComponent DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto" GetAllTag="SignalRTags.GetAllCars"></CarGridComponent>
|
||||
<CarGridComponent
|
||||
@ref="@Grid"
|
||||
DetailExpandButtonDisplayMode="GridDetailExpandButtonDisplayMode.Auto"
|
||||
GetAllTag="SignalRTags.GetAllCars">
|
||||
</CarGridComponent>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -57,123 +55,9 @@
|
|||
private LoggerClient<ManageUserProductMappings> _logger;
|
||||
//public UserModelDtoDetail UserModelDtoDetail = new();
|
||||
|
||||
|
||||
bool PopupVisible { get; set; }
|
||||
|
||||
IGrid Grid { get; set; }
|
||||
CarGridComponent Grid { get; set; }
|
||||
//object? MasterGridData { get; set; }
|
||||
|
||||
public List<string> IgnoreList =
|
||||
[
|
||||
"ReceiverEmailAddress",
|
||||
"ReceiverId",
|
||||
"SenderEmailAddress",
|
||||
"SenderId",
|
||||
"ContextId"
|
||||
];
|
||||
|
||||
|
||||
|
||||
void Grid_CustomizeElement(GridCustomizeElementEventArgs e)
|
||||
{
|
||||
if (e.ElementType == GridElementType.DataRow && e.VisibleIndex % 2 == 1)
|
||||
{
|
||||
e.CssClass = "bg-alt";
|
||||
}
|
||||
else if (e.ElementType == GridElementType.HeaderCell)
|
||||
{
|
||||
e.Style = "background-color: rgba(0, 0, 0, 0.08); font-style=bold";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e)
|
||||
{
|
||||
if (!e.IsNew) return;
|
||||
|
||||
var userEditModel = (UserModelDtoDetail)e.EditModel; //TODO not valid cast
|
||||
userEditModel.Id = Guid.NewGuid();
|
||||
|
||||
userEditModel.UserDto = new UserDtoDetail
|
||||
{
|
||||
AffiliateId = Guid.NewGuid(),
|
||||
EmailAddress = "",
|
||||
PhoneNumber = ""
|
||||
};
|
||||
|
||||
userEditModel.ProfileDto = new TIAM.Entities.Profiles.Profile
|
||||
{
|
||||
Name = "New user"
|
||||
};
|
||||
|
||||
userEditModel.Products = [];
|
||||
userEditModel.ServiceProviders = [];
|
||||
userEditModel.UserProductMappings = [];
|
||||
}
|
||||
|
||||
async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e)
|
||||
{
|
||||
var userModelDtoDetail = ((UserModelDtoDetail)e.EditModel);
|
||||
|
||||
if (e.IsNew)
|
||||
{
|
||||
//add new orderData to orderData array
|
||||
var registration = new RegistrationModel();
|
||||
//TODO: Refractor to userDataService
|
||||
|
||||
// var random = new Random();
|
||||
// const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
// var password = new string(Enumerable.Repeat(chars, 10)
|
||||
// .Select(s => s[random.Next(s.Length)]).ToArray());
|
||||
|
||||
var password = AcCharsGenerator.NewPassword(AcConst.MinPasswordLength, 16);
|
||||
|
||||
registration.Email = userModelDtoDetail.UserDto.EmailAddress;
|
||||
registration.PhoneNumber = userModelDtoDetail.UserDto.PhoneNumber;
|
||||
registration.Password = password;
|
||||
registration.ReferralId = null;
|
||||
|
||||
await UserDataService.CreateGuestUser(registration);
|
||||
_logger.Info("New user created added");
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Info("orderData updated at id " + userModelDtoDetail.Id);
|
||||
|
||||
//await transferDataService.UpdateTransferAsync((TransferWizardModel)e.EditModel);
|
||||
//modify transferData where transferData.Id == e.EditModel.Id
|
||||
}
|
||||
//get transfer from TransferData by Id
|
||||
|
||||
// foreach (var transferToModify in (List<Transfer>)TransferData)
|
||||
// {
|
||||
// myModel = (Transfer)e.EditModel;
|
||||
|
||||
// if (transferToModify.Id == myModel.Id)
|
||||
// {
|
||||
// //transferToModify.Driver = myModel.Driver;
|
||||
// }
|
||||
// }
|
||||
|
||||
//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()
|
||||
{
|
||||
//refresh grid
|
||||
|
||||
_logger.Info("orderData grid refreshed");
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
_logger = new LoggerClient<ManageUserProductMappings>(LogWriters.ToArray());
|
||||
|
|
@ -181,9 +65,6 @@
|
|||
base.OnInitialized();
|
||||
}
|
||||
|
||||
void ColumnChooserButton_Click()
|
||||
{
|
||||
Grid.ShowColumnChooser();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ using TIAM.Services;
|
|||
using AyCode.Core.Loggers;
|
||||
using AyCode.Core.Extensions;
|
||||
using TIAM.Entities.Products;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core;
|
||||
using TIAM.Core.Consts;
|
||||
|
||||
namespace TIAMWebApp.Server.Controllers
|
||||
{
|
||||
|
|
@ -54,12 +57,12 @@ namespace TIAMWebApp.Server.Controllers
|
|||
|
||||
var messageElement = message.Message;
|
||||
_logger.Debug(message.Message.Subject);
|
||||
messageElement.EmailAddress = "noreply@anataworld.com";
|
||||
|
||||
messageElement.EmailAddress = TiamConstClient.SystemEmailAddress;
|
||||
await _adminDal.AddEmailMessageAsync(messageElement);
|
||||
var result = await _messageSenderService.SendMessageAsync(messageElement, (int)message.MessageType);
|
||||
//_adminDal.AddEmailMessageAsync((TIAM.Entities.Emails.EmailMessage)SerializedMessageSenderModel.Message);
|
||||
|
||||
await _adminDal.AddEmailMessageAsync(messageElement);
|
||||
|
||||
_logger.Debug($"SendEmail result: {result}");
|
||||
|
||||
return Ok(result);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace TIAMWebApp.Server.Controllers
|
|||
[Authorize]
|
||||
[ApiController]
|
||||
[Route("api/v1/[controller]")]
|
||||
public class ServiceProviderAPIController(AdminDal adminDal, IEnumerable<IAcLogWriterBase> logWriters) : ControllerBase
|
||||
public class ServiceProviderAPIController(AdminDal adminDal, IWebHostEnvironment env, IEnumerable<IAcLogWriterBase> logWriters) : ControllerBase
|
||||
{
|
||||
private readonly TIAM.Core.Loggers.Logger<ServiceProviderAPIController> _logger = new(logWriters.ToArray());
|
||||
|
||||
|
|
@ -510,7 +510,8 @@ namespace TIAMWebApp.Server.Controllers
|
|||
var qrCodeData = qrGenerator.CreateQrCode($"https://touriam.com/{productId}", QRCodeGenerator.ECCLevel.Q);
|
||||
var qrCode = new QRCode(qrCodeData);
|
||||
//Bitmap qrCodeImage = qrCode.GetGraphic(20);
|
||||
var rootpath = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "assets");
|
||||
//var rootpath = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "assets");
|
||||
var rootpath = System.IO.Path.Combine(env.WebRootPath, "assets");
|
||||
var qrCodeImage = qrCode.GetGraphic(20, Color.DarkMagenta, Color.White, (Bitmap)Bitmap.FromFile(rootpath + "/myimage.png"));
|
||||
_logger.Info($@"qrCodeLogo: {rootpath}/myimage.png");
|
||||
var ms = new MemoryStream();
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@
|
|||
<PropertyGroup>
|
||||
<WasmEnableSIMD>false</WasmEnableSIMD>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="wwwroot\Assets\myimage.png" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Loading…
Reference in New Issue