diff --git a/Hushian.Application/Services/AuthService.cs b/Hushian.Application/Services/AuthService.cs index 357f057..dbe8fee 100644 --- a/Hushian.Application/Services/AuthService.cs +++ b/Hushian.Application/Services/AuthService.cs @@ -67,6 +67,7 @@ namespace Hushian.Application.Services Role="Company", img=Company.logo, MobileOrUserName = Company.Mobile, + CompanyId= Company.ID, Token = new JwtSecurityTokenHandler().WriteToken(_jwtSettings.GenerateToken(Company.Mobile, Company.ID, "Company")) }; } diff --git a/Hushian.Application/Services/ConversationService.cs b/Hushian.Application/Services/ConversationService.cs index 766c925..a87a473 100644 --- a/Hushian.Application/Services/ConversationService.cs +++ b/Hushian.Application/Services/ConversationService.cs @@ -128,14 +128,14 @@ namespace Hushian.Application.Services .Where(w => w.UserID == UserID && w.CompanyID==CompanyID) .Select(s => new Read_ConversationDto() { - ExperID = s.ConversationResponses.Last().ExperID, - ExperFullName = s.ConversationResponses.Last().Exper.FullName, + ExperID = s.ConversationResponses.OrderBy(o => o.ID).Last().ExperID, + ExperFullName = s.ConversationResponses.OrderBy(o => o.ID).Last().Exper.FullName, GroupID = s.GroupID, GroupName = s.Group.Name, - LastText = s.ConversationResponses.Last().Text, + LastText = s.ConversationResponses.OrderBy(o => o.ID).Last().Text, LastMsgdate = s.Cdatetime.GetDatePersian(), LastMsgtime = s.Cdatetime.GetTime(), - LastMsgType = s.ConversationResponses.Last().Type, + LastMsgType = s.ConversationResponses.OrderBy(o => o.ID).Last().Type, NoReadCount = s.ConversationResponses.Count(c => !c.IsRead), status = s.Status, UserID = s.UserID, @@ -170,14 +170,14 @@ namespace Hushian.Application.Services .Where(w => w.ConversationResponses.Any(a => a.ExperID == ExperID) && w.Status == status) .Select(s => new Read_ConversationDto() { - ExperID = s.ConversationResponses.Last().ExperID, - ExperFullName = s.ConversationResponses.Last().Exper.FullName, + ExperID = s.ConversationResponses.OrderBy(o => o.ID).Last().ExperID, + ExperFullName = s.ConversationResponses.OrderBy(o => o.ID).Last().Exper.FullName, GroupID = s.GroupID, GroupName = s.Group.Name, - LastText = s.ConversationResponses.Last().Text, + LastText = s.ConversationResponses.OrderBy(o => o.ID).Last().Text, LastMsgdate = s.Cdatetime.GetDatePersian(), LastMsgtime = s.Cdatetime.GetTime(), - LastMsgType = s.ConversationResponses.Last().Type, + LastMsgType = s.ConversationResponses.OrderBy(o => o.ID).Last().Type, NoReadCount = s.ConversationResponses.Count(c => !c.IsRead), status = s.Status, UserID = s.UserID, @@ -191,14 +191,14 @@ namespace Hushian.Application.Services .Where(w => w.CompanyID==CompanyID && w.Status ==status) .Select(s => new Read_ConversationDto() { - ExperID = s.ConversationResponses.Last().ExperID, - ExperFullName = s.ConversationResponses.Last().Exper.FullName, + ExperID = s.ConversationResponses.OrderBy(o => o.ID).Last().ExperID, + ExperFullName = s.ConversationResponses.OrderBy(o => o.ID).Last().Exper.FullName, GroupID = s.GroupID, GroupName = s.Group.Name, - LastText = s.ConversationResponses.Last().Text, + LastText = s.ConversationResponses.OrderBy(o => o.ID).Last().Text, LastMsgdate = s.Cdatetime.GetDatePersian(), LastMsgtime = s.Cdatetime.GetTime(), - LastMsgType = s.ConversationResponses.Last().Type, + LastMsgType = s.ConversationResponses.OrderBy(o => o.ID).Last().Type, NoReadCount = s.ConversationResponses.Count(c => !c.IsRead), status = s.Status, UserID = s.UserID, @@ -212,14 +212,14 @@ namespace Hushian.Application.Services .Where(w => w.Status== ConversationStatus.Recorded && w.CompanyID == CompanyID) .Select(s => new Read_ConversationDto() { - ExperID = s.ConversationResponses.Last().ExperID, - ExperFullName = s.ConversationResponses.Last().Exper.FullName, + ExperID = s.ConversationResponses.OrderBy(o=>o.ID).Last().ExperID, + ExperFullName = s.ConversationResponses.OrderBy(o => o.ID).Last().Exper.FullName, GroupID = s.GroupID, GroupName = s.Group.Name, - LastText = s.ConversationResponses.Last().Text, + LastText = s.ConversationResponses.OrderBy(o => o.ID).Last().Text, LastMsgdate = s.Cdatetime.GetDatePersian(), LastMsgtime = s.Cdatetime.GetTime(), - LastMsgType = s.ConversationResponses.Last().Type, + LastMsgType = s.ConversationResponses.OrderBy(o => o.ID).Last().Type, NoReadCount = s.ConversationResponses.Count(c => !c.IsRead), status = s.Status, UserID = s.UserID, diff --git a/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs b/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs index 7af9175..715a802 100644 --- a/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs +++ b/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs @@ -33,11 +33,30 @@ namespace Hushian.WebApi.Controllers.v1 return response.Success ? NoContent() : BadRequest(response.Errors); } - [HttpGet("GetExpersCompany/{CompanyID}")] + [HttpGet("GetExpersCompany")] [Authorize] - public async Task GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10) + public async Task GetExpersCompany(int? CompanyID) { - var response = await _experService.GetExpersInCompany(CompanyID); + if (!CompanyID.HasValue) + { + if (!CompanyID.HasValue) + { + if (User.IsInRole("Exper")) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + CompanyID = await _experService.GetCompanyIDExper(ExperID); + } + else if (User.IsInRole("Company")) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + CompanyID = Convert.ToInt32(strCompanyID); + + + } + } + } + var response = await _experService.GetExpersInCompany(CompanyID.GetValueOrDefault()); return Ok(response); } diff --git a/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs b/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs index c445524..05e86fa 100644 --- a/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs +++ b/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs @@ -12,11 +12,11 @@ namespace Hushian.WebApi.Controllers.v1 public class GroupController : ControllerBase { private readonly GroupService _groupService; - private readonly CompanyService _companyService; - public GroupController(GroupService groupService, CompanyService companyService) + private readonly ExperService _experService; + public GroupController(GroupService groupService, ExperService experService) { _groupService = groupService; - _companyService = companyService; + _experService = experService; } [HttpPost("AddGroup")] @@ -76,8 +76,19 @@ namespace Hushian.WebApi.Controllers.v1 if (!CompanyID.HasValue) { - string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); - CompanyID = Convert.ToInt32(strCompanyID); + if (User.IsInRole("Exper")) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + CompanyID =await _experService.GetCompanyIDExper(ExperID); + } + else if (User.IsInRole("Company")) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + CompanyID = Convert.ToInt32(strCompanyID); + + + } } var response = await _groupService.GetGroupsCompany(CompanyID.Value); return Ok(response); diff --git a/Presentation/HushianWebApp/Components/GroupUsersComponent.razor b/Presentation/HushianWebApp/Components/GroupUsersComponent.razor index b417132..98db589 100644 --- a/Presentation/HushianWebApp/Components/GroupUsersComponent.razor +++ b/Presentation/HushianWebApp/Components/GroupUsersComponent.razor @@ -2,6 +2,7 @@ @using HushianWebApp.Service @inject GroupService groupService; @inject UserService userService; +@inject HushianWebApp.Services.ILocalStorageService localStorageService; @if (!Spinnervisible) {
@@ -52,7 +53,7 @@ @functions { private async Task> DataProvider(AutoCompleteDataProviderRequest request) { - CoExpers = await userService.GetExpersCompany(0, 0, 0); + CoExpers = await userService.GetExpersCompany(); return await Task.FromResult(new AutoCompleteDataProviderResult { Data = CoExpers.Where(w => w.FullName.Contains(request.Filter.Value)), TotalCount = CoExpers.Count() }); } diff --git a/Presentation/HushianWebApp/Layout/MainLayout.razor b/Presentation/HushianWebApp/Layout/MainLayout.razor index b2695ca..56751d3 100644 --- a/Presentation/HushianWebApp/Layout/MainLayout.razor +++ b/Presentation/HushianWebApp/Layout/MainLayout.razor @@ -76,7 +76,7 @@ public string Username { get; set; } public string Fullname { get; set; } public byte[]? img { get; set; } - public List Roles { get; set; } = new(); + public string Role { get; set; } bool isonline = false; bool isAuthorizedCompanyUser = false; public string TitleRole { get; set; } = ""; @@ -93,9 +93,9 @@ } - TitleRole = Roles.Any(a => a == "Company") ? "مدیر" : "کارشناس"; + TitleRole = Role == "Company" ? "مدیر" : "کارشناس"; - isAuthorizedCompanyUser = Roles.Contains("Company") || (Roles.Contains("Exper") && await userService.CheckAvailableExperInCompany()); + isAuthorizedCompanyUser = Role=="Company" || Role=="Exper" && await userService.CheckAvailableExperInCompany(); string route = NavigationManager.Uri.Replace(NavigationManager.BaseUri, "").ToLower(); if (route.Length > 0) @@ -170,7 +170,7 @@ async Task CheckOnline() { - var token = await localStorageService.GetItem("key"); + var token = await localStorageService.GetItem("C/key"); if (string.IsNullOrEmpty(token)) { isonline = false; @@ -188,8 +188,8 @@ } else { - Roles = await localStorageService.GetItem>("Role"); - if (Roles.Count == 1 && Roles.Contains("HushianUserCompany")) + Role = await localStorageService.GetItem("C/Role"); + if (Role=="User") { isonline = false; NavigationManager.NavigateTo("/NotFound"); diff --git a/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor b/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor index dd0c919..071c9fa 100644 --- a/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor +++ b/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor @@ -82,7 +82,7 @@ { parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); - if (!(await localStorageService.GetItem>("Role")).Any(a => a == "HushianManagerCompany")) + if (await localStorageService.GetItem("C/Role") != "Company") navigationManager.NavigateTo("/NotFound"); await base.OnInitializedAsync(); } diff --git a/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor b/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor index 4a46456..f3fef37 100644 --- a/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor +++ b/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor @@ -35,7 +35,7 @@ AllowRowClick=true> @context.FullName - + @@ -55,20 +55,25 @@ AllowRowClick=true> Dictionary parameters = new Dictionary(); Grid grid = default!; + public List list = new(); private Modal modal = default!; string title = "کارشناس جدید"; protected override async Task OnInitializedAsync() { parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); - if (await localStorageService.GetItem("Role")!= "Company" ) + if (await localStorageService.GetItem("C/Role")!= "Company" ) navigationManager.NavigateTo("/NotFound"); await base.OnInitializedAsync(); } private async Task> DataProvider(GridDataProviderRequest request) { - var employees = await userService.GetExpersCompany(0, request.PageNumber, request.PageSize); - return await Task.FromResult(request.ApplyTo(employees != null ? employees : new())); + if (list.Count <= 0) + list = await userService.GetExpersCompany(); + + int skip = (request.PageNumber - 1) * request.PageSize; + + return await Task.FromResult(request.ApplyTo(list != null ? list.Skip(skip).Take(request.PageSize).ToList() : new())); } async Task CallBack() { diff --git a/Presentation/HushianWebApp/Service/UserService.cs b/Presentation/HushianWebApp/Service/UserService.cs index c81dbdb..6335fea 100644 --- a/Presentation/HushianWebApp/Service/UserService.cs +++ b/Presentation/HushianWebApp/Service/UserService.cs @@ -18,10 +18,10 @@ namespace HushianWebApp.Service var response = await _baseController.Post($"{BaseRoute}AddExper", request); return response.IsSuccessStatusCode; } - public async Task?> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10) + public async Task?> GetExpersCompany() { - string route = $"{BaseRoute}GetExpersCompany/{CompanyID}&PageIndex={PageIndex}&PageSize={PageSize}"; - + string route = $"{BaseRoute}GetExpersCompany"; + //&PageIndex={PageIndex}&PageSize={PageSize} var response = await _baseController.Get(route); if (response.IsSuccessStatusCode) { @@ -29,7 +29,17 @@ namespace HushianWebApp.Service } return null; } - + public async Task?> GetExpersCompany(int CompanyID) + { + string route = $"{BaseRoute}GetExpersCompany?CompanyID={CompanyID}"; + var response = await _baseController.Get(route); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return null; + } + //-------------------------------------------------------------------------------------------------------------- public async Task EditUserYourself(Update_ExperDto request) //ویرایش کاربران توسط خود { diff --git a/TODO.txt b/TODO.txt index d2ddd9e..5f28270 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,2 +1 @@ -بررسی لاگین -بهتر بعد ثبت نام کاربر مدبر وارد شود \ No newline at end of file + \ No newline at end of file