This commit is contained in:
mmrbnjd
2025-07-12 21:33:44 +03:30
parent d397f70b9a
commit 8a6ff3da67
32 changed files with 320 additions and 403 deletions

View File

@@ -1,7 +1,7 @@
@page "/GroupManagement"
<Modal @ref="modal" />
<ConfirmDialog @ref="dialog" />
@using Hushian.Application.Dtos
@using Common.Dtos.Group
@using HushianWebApp.Components
@using HushianWebApp.Service
@using HushianWebApp.Services
@@ -15,7 +15,7 @@
گروه جدید
</Button>
<Grid @ref="grid" TItem="GroupDto"
<Grid @ref="grid" TItem="Read_GroupDto"
AllowSorting="true"
Class="table table-hover"
DataProvider="DataProvider"
@@ -26,7 +26,7 @@ OnRowDoubleClick="OnRowClick"
AllowRowClick=true>
<GridColumns>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="GroupDto" HeaderText="تصویر گروه" >
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_GroupDto" HeaderText="تصویر گروه">
@if (context.img?.Length!=0)
{
<Image Class="rounded-circle mx-auto d-block" src="@GetImageSource(context.img)" height="25" width="25" alt="Uploaded Image" />
@@ -36,23 +36,23 @@ AllowRowClick=true>
<Icon Name="IconName.People" Size="IconSize.x5" />
}
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="GroupDto" HeaderText="شناسه گروه" SortKeySelector="item => item.ID">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_GroupDto" HeaderText="شناسه گروه" SortKeySelector="item => item.ID">
@context.ID
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="GroupDto" HeaderText="نام گروه" SortKeySelector="item => item.Name">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_GroupDto" HeaderText="نام گروه" SortKeySelector="item => item.Name">
@context.Name
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="GroupDto" HeaderText="توضیحات" >
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_GroupDto" HeaderText="توضیحات">
@context.Info
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="GroupDto" HeaderText="وضعیت">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_GroupDto" HeaderText="وضعیت">
<Switch Value="@context.Available" ValueExpression="() => context.Available" ValueChanged="async(v)=>await SwitchChanged(context,v)" />
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="GroupDto" HeaderText="عملیات">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_GroupDto" HeaderText="عملیات">
<Button Color="ButtonColor.Danger" Size="ButtonSize.ExtraSmall" @onclick="async()=>await DeleteGroup(context.ID,context.Name)"> حذف </Button>
<Button Color="ButtonColor.Warning" Size="ButtonSize.ExtraSmall" @onclick="async()=>await showGroupsComponent(context.ID,context.Name)"> کاربران </Button>
@@ -65,11 +65,11 @@ AllowRowClick=true>
private ConfirmDialog dialog = default!;
Dictionary<string, object> parameters = new Dictionary<string, object>();
Grid<GroupDto> grid = default!;
Grid<Read_GroupDto> grid = default!;
private Modal modal = default!;
string title = "گروه جدید";
public List<GroupDto> list = new();
private async Task<GridDataProviderResult<GroupDto>> DataProvider(GridDataProviderRequest<GroupDto> request)
public List<Read_GroupDto> list = new();
private async Task<GridDataProviderResult<Read_GroupDto>> DataProvider(GridDataProviderRequest<Read_GroupDto> request)
{
if(list.Count <= 0)
list = await groupService.GetGroupsCompany();
@@ -86,7 +86,7 @@ AllowRowClick=true>
navigationManager.NavigateTo("/NotFound");
await base.OnInitializedAsync();
}
private async Task OnRowClick(GridRowEventArgs<GroupDto> args)
private async Task OnRowClick(GridRowEventArgs<Read_GroupDto> args)
{
Dictionary<string, object> eparameters = new Dictionary<string, object>();
eparameters.Add("model", args.Item);
@@ -97,7 +97,7 @@ AllowRowClick=true>
}
private async Task SwitchChanged(GroupDto model, bool value)
private async Task SwitchChanged(Read_GroupDto model, bool value)
{
if (model.Available != value)
{

View File

@@ -1,5 +1,5 @@
@page "/Settings"
@using Hushian.Application.Dtos.Company
@using Common.Dtos.Company
@using HushianWebApp.Components
@using HushianWebApp.Service
@using HushianWebApp.Services
@@ -71,7 +71,10 @@
</div>
<div class="col-md-12" style="margin-top:15px">
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.Fullname" type="text" placeholder="نام کامل" />
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.FullName" type="text" placeholder="نام شرکت" />
</div>
<div class="col-md-12" style="margin-top:15px">
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.FullNameManager" type="text" placeholder="نام مدیر" />
</div>
<div class="col-md-12">
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.Email" type="text" placeholder="پست الکترونیک" />
@@ -79,22 +82,17 @@
<div class="col-md-12">
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.WebSite" type="text" placeholder="وب سایت" />
</div>
<div class="col-md-12">
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.Phone" type="text" placeholder="تلفن" />
</div>
<div class="col-md-12">
<input dir="ltr" class="form-control text-center mb-2" @bind-value="@dto.Info" type="text" placeholder="توضیحات" />
</div>
<div class="col-md-12 d-flex align-items-center mb-2">
<InputFile type="file" OnChange="OnFileChange" accept=".png" />
@if (dto.img != null && dto.img.Length > 0)
@if (dto.logo != null && dto.logo.Length > 0)
{
<Image src="@GetImageSource()" class="rounded mx-2" height="25" width="25" alt="Uploaded Image" />
}
</div>
<div class="d-grid gap-2">
<Button Loading=loading LoadingText="در حال ذخیره اطلاعات..." Color="ButtonColor.Warning"
@onclick="updateItem">
@onclick="updateItem">
ویرایش
</Button>
</div>
@@ -127,18 +125,20 @@
</div>
@code {
[Inject] protected ToastService ToastService { get; set; } = default!;
[Inject] protected ToastService ToastService { get; set; } = default!;
bool ALLOWcompanyinfo = true;
bool ALLOWcompanyinfo = true;
public bool loading { get; set; } = false;
public CompanyDto dto { get; set; }
public ReadANDUpdate_CompanyDto dto { get; set; }
= new();
int CompanyID = 0;
protected override async Task OnInitializedAsync()
{
if (!(await localStorageService.GetItem<List<string>>("Role")).Any(a => a == "HushianManagerCompany"))
if (await localStorageService.GetItem<string>("Role") != "Company")
navigationManager.NavigateTo("/NotFound");
CompanyID= await localStorageService.GetItem<int>("C/CompanyId");
dto=await companyService.GetCompany();
dto = await companyService.GetCompany(CompanyID);
await base.OnInitializedAsync();
}
private async Task OnFileChange(InputFileChangeEventArgs e)
@@ -147,14 +147,14 @@
using (var memoryStream = new MemoryStream())
{
await file.OpenReadStream().CopyToAsync(memoryStream);
dto.img = memoryStream.ToArray();
dto.logo = memoryStream.ToArray();
}
}
private string GetImageSource()
{
if (dto.img != null)
if (dto.logo != null)
{
return $"data:image/jpeg;base64,{Convert.ToBase64String(dto.img)}";
return $"data:image/jpeg;base64,{Convert.ToBase64String(dto.logo)}";
}
return string.Empty;
}

View File

@@ -1,7 +1,6 @@
@page "/UserManagement"
<ConfirmDialog @ref="dialog" />
@using Common.Dtos.User
@using Hushian.Application.Dtos
@using Common.Dtos.Exper
@using HushianWebApp.Components
@using HushianWebApp.Service
@using HushianWebApp.Services
@@ -17,7 +16,7 @@
کارشناس جدید
</Button>
<Grid @ref="grid" TItem="HushianUserDto"
<Grid @ref="grid" TItem="Read_ExperDto"
AllowSorting="true"
Class="table table-hover"
DataProvider="DataProvider"
@@ -28,39 +27,23 @@ OnRowDoubleClick="OnRowClick"
AllowRowClick=true>
<GridColumns>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="تصویر کاربر" >
@if (context.img?.Length != 0)
{
<Image Class="rounded-circle mx-auto d-block" src="@GetImageSource(context.img)" height="25" width="25" alt="Uploaded Image" />
}
else
{
<Icon Name="IconName.Person" Size="IconSize.x5" />
}
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="نام کاریری" SortKeySelector="item => item.UserName">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_ExperDto" HeaderText="نام کاریری" SortKeySelector="item => item.UserName">
@context.UserName
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="نام کامل" SortKeySelector="item => item.FullName">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_ExperDto" HeaderText="نام کامل" SortKeySelector="item => item.FullName">
@context.FullName
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="پست اکترونیک" SortKeySelector="item => item.Email">
@context.Email
</GridColumn>
@* <GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="موبابل" SortKeySelector="item => item.PhoneNumber">
@context.PhoneNumber
</GridColumn> *@
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="وضعیت">
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_ExperDto" HeaderText="وضعیت">
<Switch Value="@context.Available" ValueExpression="() => context.Available" ValueChanged="async(v)=>await SwitchChanged(context,v)" />
</GridColumn>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="HushianUserDto" HeaderText="عملیات">
<Button Color="ButtonColor.Danger" Size="ButtonSize.ExtraSmall" @onclick="async()=>await DeleteExper(context.UserID,context.FullName)"> حذف </Button>
<Button Color="ButtonColor.Warning" Size="ButtonSize.ExtraSmall" @onclick="async()=>await showGroupsComponent(context.UserID,context.FullName)"> گروه ها </Button>
<GridColumn HeaderTextAlignment="Alignment.Center" TextAlignment="Alignment.Center" TItem="Read_ExperDto" HeaderText="عملیات">
<Button Color="ButtonColor.Danger" Size="ButtonSize.ExtraSmall" @onclick="async()=>await DeleteExper(context.ID,context.FullName)"> حذف </Button>
<Button Color="ButtonColor.Warning" Size="ButtonSize.ExtraSmall" @onclick="async()=>await showGroupsComponent(context.ID,context.FullName)"> گروه ها </Button>
</GridColumn>
</GridColumns>
@@ -71,35 +54,32 @@ AllowRowClick=true>
private ConfirmDialog dialog = default!;
Dictionary<string, object> parameters = new Dictionary<string, object>();
Grid<HushianUserDto> grid = default!;
Grid<Read_ExperDto> grid = default!;
private Modal modal = default!;
string title = "کارشناس جدید";
protected override async Task OnInitializedAsync()
{
parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack));
if (!(await localStorageService.GetItem<List<string>>("Role")).Any(a =>a== "HushianManagerCompany") )
if (await localStorageService.GetItem<string>("Role")!= "Company" )
navigationManager.NavigateTo("/NotFound");
await base.OnInitializedAsync();
}
private async Task<GridDataProviderResult<HushianUserDto>> DataProvider(GridDataProviderRequest<HushianUserDto> request)
private async Task<GridDataProviderResult<Read_ExperDto>> DataProvider(GridDataProviderRequest<Read_ExperDto> request)
{
var employees = await userService.GetExpersCompany(0, request.PageNumber, request.PageSize);
return await Task.FromResult(request.ApplyTo(employees != null ? employees.list : new()));
return await Task.FromResult(request.ApplyTo(employees != null ? employees : new()));
}
async Task CallBack()
{
await modal.HideAsync();
await grid.RefreshDataAsync();
}
private async Task OnRowClick(GridRowEventArgs<HushianUserDto> args)
private async Task OnRowClick(GridRowEventArgs<Read_ExperDto> args)
{
var editmodel = new EditUserFromUserDto()
var editmodel = new Update_ExperDto()
{
Email = args.Item.Email,
FullName = args.Item.FullName,
UserName = args.Item.UserName,
img = args.Item.img
FullName = args.Item.FullName
};
Dictionary<string, object> eparameters = new Dictionary<string, object>();
eparameters.Add("model", editmodel);
@@ -108,17 +88,17 @@ AllowRowClick=true>
await modal.ShowAsync<UpdateExperComponent>($"ویرایش کارشناس {args.Item.FullName}", parameters: eparameters);
}
private async Task SwitchChanged(HushianUserDto model,bool value)
private async Task SwitchChanged(Read_ExperDto model, bool value)
{
if (model.Available != value)
{
if (await userService.ChangeAvailableExperFromManager(model.UserID, value))
if (await userService.ChangeAvailableExperFromManager(model.ID, value))
model.Available = value;
}
}
private async Task DeleteExper(string ExperID,string name)
private async Task DeleteExper(int ExperID,string name)
{
var confirmation = await dialog.ShowAsync(
title: $"مطمئنی می‌خوای {name} حذف کنی؟",
@@ -144,7 +124,7 @@ AllowRowClick=true>
}
return string.Empty;
}
async Task showGroupsComponent(string ExperID, string name)
async Task showGroupsComponent(int ExperID, string name)
{
Dictionary<string, object> eparameters = new Dictionary<string, object>();
eparameters.Add("ExperID", ExperID);