This commit is contained in:
mmrbnjd
2025-07-12 16:59:25 +03:30
parent ff342a53c0
commit d397f70b9a
9 changed files with 82 additions and 87 deletions

View File

@@ -155,5 +155,10 @@ namespace Hushian.Application.Services
if (exper == null) return 0; if (exper == null) return 0;
return exper.CompanyID; return exper.CompanyID;
} }
public async Task<bool> AvailableExperInCompany(int ExperID)
{
return await _ExperRepository.Get().AnyAsync(w => w.ID == ExperID && w.Available);
}
} }
} }

View File

@@ -16,13 +16,14 @@ namespace Hushian.WebApi.Controllers.v1
private readonly ConversationService _conversationService; private readonly ConversationService _conversationService;
private readonly CompanyService _companyService; private readonly CompanyService _companyService;
private readonly ExperService _experService; private readonly ExperService _experService;
public ConversationController(ConversationService conversationService, CompanyService companyService) public ConversationController(ConversationService conversationService, CompanyService companyService, ExperService experService)
{ {
_conversationService = conversationService; _conversationService = conversationService;
_companyService = companyService; _companyService = companyService;
_experService = experService;
} }
[HttpGet("MyConversation")] [HttpPost("MyConversation")]
[Authorize(Roles = "Company,Exper")] [Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> MyConversation(ConversationStatus status) public async Task<ActionResult> MyConversation(ConversationStatus status)
{ {

View File

@@ -7,6 +7,7 @@ using Hushian.Application.Services;
using Hushian.Domain.Entites; using Hushian.Domain.Entites;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.Design;
using System.IdentityModel.Tokens.Jwt; using System.IdentityModel.Tokens.Jwt;
namespace Hushian.WebApi.Controllers.v1 namespace Hushian.WebApi.Controllers.v1
@@ -16,7 +17,11 @@ namespace Hushian.WebApi.Controllers.v1
public class ExperController : ControllerBase public class ExperController : ControllerBase
{ {
private readonly ExperService _experService; private readonly ExperService _experService;
public ExperController(ExperService experService)
{
_experService = experService;
}
[HttpPost("AddExper")] [HttpPost("AddExper")]
[Authorize(Roles = "Company")] [Authorize(Roles = "Company")]
@@ -33,7 +38,7 @@ namespace Hushian.WebApi.Controllers.v1
public async Task<ActionResult> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10) public async Task<ActionResult> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10)
{ {
var response = await _experService.GetExpersInCompany(CompanyID); var response = await _experService.GetExpersInCompany(CompanyID);
return Ok(response); return Ok(response);
} }
@@ -44,7 +49,7 @@ namespace Hushian.WebApi.Controllers.v1
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int ExperID = Convert.ToInt32(strExperID); int ExperID = Convert.ToInt32(strExperID);
var response = await _experService.UpdateExper(editUser,ExperID); var response = await _experService.UpdateExper(editUser, ExperID);
return response ? NoContent() return response ? NoContent()
: BadRequest(new List<string> { "یافت نشد" }); : BadRequest(new List<string> { "یافت نشد" });
} }
@@ -56,11 +61,11 @@ namespace Hushian.WebApi.Controllers.v1
int ExperID = Convert.ToInt32(strExperID); int ExperID = Convert.ToInt32(strExperID);
var response = await _experService.GetInfoExper(ExperID); var response = await _experService.GetInfoExper(ExperID);
return response!=null ? Ok(response) : BadRequest(new List<string> { "یافت نشد" }); return response != null ? Ok(response) : BadRequest(new List<string> { "یافت نشد" });
} }
[HttpPut("ExperEditingFromManager/{ExperID}")] //ویرایش کارشناس توسط مدیرش [HttpPut("ExperEditingFromManager/{ExperID}")] //ویرایش کارشناس توسط مدیرش
[Authorize(Roles = "Company")] [Authorize(Roles = "Company")]
public async Task<ActionResult> ExperEditingFromManager(int ExperID,[FromBody] Update_ExperDto editUser) public async Task<ActionResult> ExperEditingFromManager(int ExperID, [FromBody] Update_ExperDto editUser)
{ {
var response = await _experService.UpdateExper(editUser, ExperID); var response = await _experService.UpdateExper(editUser, ExperID);
return response ? NoContent() return response ? NoContent()
@@ -74,18 +79,18 @@ namespace Hushian.WebApi.Controllers.v1
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int ExperID = Convert.ToInt32(strExperID); int ExperID = Convert.ToInt32(strExperID);
var response = await _experService.ChangePasswordExperFromExper(item,ExperID); var response = await _experService.ChangePasswordExperFromExper(item, ExperID);
return response.Success && response.Value ? NoContent() return response.Success && response.Value ? NoContent()
: BadRequest(response.Errors); : BadRequest(response.Errors);
} }
[HttpPut("ChangePasswordFromManager/{ExperID}")] //تغییر کلمه عبور کارشناس توسط مدیرش [HttpPut("ChangePasswordFromManager/{ExperID}")] //تغییر کلمه عبور کارشناس توسط مدیرش
[Authorize(Roles = "Company")] [Authorize(Roles = "Company")]
public async Task<ActionResult> ChangePasswordFromManager(int ExperID,[FromBody] ChangePasswordDto item) public async Task<ActionResult> ChangePasswordFromManager(int ExperID, [FromBody] ChangePasswordDto item)
{ {
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int CompanyID = Convert.ToInt32(strCompanyID); int CompanyID = Convert.ToInt32(strCompanyID);
var response = await _experService.ChangePasswordExperFromCompanyManaget(item, ExperID,CompanyID); var response = await _experService.ChangePasswordExperFromCompanyManaget(item, ExperID, CompanyID);
return response.Success && response.Value ? NoContent() return response.Success && response.Value ? NoContent()
: BadRequest(response.Errors); : BadRequest(response.Errors);
} }
@@ -97,11 +102,11 @@ namespace Hushian.WebApi.Controllers.v1
int CompanyID = Convert.ToInt32(strCompanyID); int CompanyID = Convert.ToInt32(strCompanyID);
var response = await _experService.ChangeAvailableExper(ExperID,CompanyID,Available); var response = await _experService.ChangeAvailableExper(ExperID, CompanyID, Available);
return response ? NoContent() return response ? NoContent()
: BadRequest(new List<string> { "یافت نشد"}); : BadRequest(new List<string> { "یافت نشد" });
} }
[HttpDelete("DeleteExperFromManager/{ExperID}")] [HttpDelete("DeleteExperFromManager/{ExperID}")]
[Authorize(Roles = "Company")] [Authorize(Roles = "Company")]
public async Task<ActionResult> DeleteExperFromManager(int ExperID) public async Task<ActionResult> DeleteExperFromManager(int ExperID)
{ {
@@ -113,6 +118,21 @@ namespace Hushian.WebApi.Controllers.v1
return response ? NoContent() return response ? NoContent()
: BadRequest(new List<string> { "یافت نشد" }); : BadRequest(new List<string> { "یافت نشد" });
} }
[HttpGet("CheckAvailableExperInCompany")]
public async Task<ActionResult> CheckAvailableExper(int? ExperID)
{
if (!ExperID.HasValue)
{
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
ExperID = Convert.ToInt32(strExperID);
}
var response = await _experService.AvailableExperInCompany(ExperID.GetValueOrDefault());
return response ? NoContent()
: BadRequest();
}
} }
} }

View File

@@ -15,7 +15,6 @@ namespace Hushian.WebApi.Controllers.v1
_verificationService = verificationService; _verificationService = verificationService;
} }
//------ UserName by Exper - Mobile by Company //------ UserName by Exper - Mobile by Company
[HttpGet("ForgetPassword/{input}")] [HttpGet("ForgetPassword/{input}")]
public async Task<ActionResult<int>> GetIDAndSendCodeForForgetPasswordByUserID(string input) public async Task<ActionResult<int>> GetIDAndSendCodeForForgetPasswordByUserID(string input)

View File

@@ -1,9 +1,7 @@
using BlazorBootstrap; using BlazorBootstrap;
using Common.Dtos.User;
using Common.Models.Auth; using Common.Models.Auth;
using Common.Models.Auth.CompanySide; using Common.Models.Auth.CompanySide;
using Common.Models.Auth.UserSide; using Common.Models.Auth.UserSide;
using Common.Models.Identity;
using HushianWebApp.Services; using HushianWebApp.Services;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using System.Net.Http.Json; using System.Net.Http.Json;

View File

@@ -1,4 +1,5 @@
using Hushian.Application.Dtos; using Common.Dtos.Conversation;
using Common.Enums;
using System.Net.Http.Json; using System.Net.Http.Json;
namespace HushianWebApp.Service namespace HushianWebApp.Service
@@ -13,27 +14,27 @@ namespace HushianWebApp.Service
_baseController = baseController; _baseController = baseController;
} }
public async Task <List<ConversationDto>> MyConversationIsFinished() public async Task <List<Read_ConversationDto>> MyConversationIsFinished()
{ {
var response = await _baseController.Get($"{BaseRoute}MyConversationIsFinished"); var response = await _baseController.Post($"{BaseRoute}MyConversation", ConversationStatus.Finished);
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new() ; return new() ;
} }
public async Task<List<ConversationDto>> MyConversationIsInProgress() public async Task<List<Read_ConversationDto>> MyConversationIsInProgress()
{ {
var response = await _baseController.Get($"{BaseRoute}MyConversationIsInProgress"); var response = await _baseController.Post($"{BaseRoute}MyConversation", ConversationStatus.InProgress);
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new(); return new();
} }
public async Task<List<ConversationDto>> ConversationAwaitingOurResponse() public async Task<List<Read_ConversationDto>> ConversationAwaitingOurResponse()
{ {
var response = await _baseController.Get($"{BaseRoute}ConversationAwaitingOurResponse"); var response = await _baseController.Get($"{BaseRoute}ConversationAwaitingOurResponse");
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new(); return new();
} }
@@ -43,36 +44,28 @@ namespace HushianWebApp.Service
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<List<ConversationItemDto>> GetConversationItems(int ConversationID) public async Task<List<Read_ConversationResponseDto>> GetConversationItems(int ConversationID)
{ {
var response = await _baseController.Get($"{BaseRoute}ConversationItems/{ConversationID}"); var response = await _baseController.Get($"{BaseRoute}ConversationItems/{ConversationID}");
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationItemDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_ConversationResponseDto>>();
return new(); return new();
} }
public async Task ADDConversationItemFromCompanySide(int ConversationID,string text) public async Task ADDConversationItemFromCompanySide(int ConversationID,string text, ConversationType type)
{ {
var response = await _baseController.Post($"{BaseRoute}ADDConversationItemFromCompanySide/{ConversationID}",new ADDConversationItemDto() var response = await _baseController.Post($"{BaseRoute}ADDConversationResponse",new ADD_ConversationResponseDto()
{ {
ConversationID = ConversationID, ConversationID = ConversationID,
text=text Text=text,
Type=type
}); });
/* if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationItemDto>>();
// return new();*/
} }
public async Task<bool> ConversationIsFinish(int ConversationID) public async Task<bool> ConversationIsFinish(int ConversationID)
{ {
var response = await _baseController.Put($"{BaseRoute}ConversationIsFinish/{ConversationID}"); var response = await _baseController.Put($"{BaseRoute}ConversationIsFinish/{ConversationID}");
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<bool> ConversationIsStart(int ConversationID)
{
var response = await _baseController.Put($"{BaseRoute}ConversationIsStart/{ConversationID}");
return response.IsSuccessStatusCode;
}
public async Task<int> GetCountQueueCompany(int CompanyID,int GroupID=0) public async Task<int> GetCountQueueCompany(int CompanyID,int GroupID=0)
{ {
var response = await _baseController.Get($"{BaseRoute}CountQueueCompany/{CompanyID}?GroupID={GroupID}"); var response = await _baseController.Get($"{BaseRoute}CountQueueCompany/{CompanyID}?GroupID={GroupID}");
@@ -81,11 +74,11 @@ namespace HushianWebApp.Service
return -1; return -1;
} }
public async Task<List<ConversationDto>> MyConversationUserSide(int CompanyID) public async Task<List<Read_ConversationDto>> MyConversationUserSide(int CompanyID)
{ {
var response = await _baseController.Get($"{BaseRoute}ConversationFromUserSide/{CompanyID}"); var response = await _baseController.Get($"{BaseRoute}ConversationFromUserSide/{CompanyID}");
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new(); return new();
} }

View File

@@ -44,7 +44,7 @@ namespace HushianWebApp.Service
var response = await _baseController.Get($"{BaseRoute}GetGroupsCompany"); var response = await _baseController.Get($"{BaseRoute}GetGroupsCompany");
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
return await response.Content.ReadFromJsonAsync<List<GroupDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_GroupDto>>();
} }
return null; return null;
} }

View File

@@ -1,80 +1,66 @@
using System.Net.Http.Json; using Common.Dtos;
using Common.Dtos.Exper;
using System.Net.Http.Json;
namespace HushianWebApp.Service namespace HushianWebApp.Service
{ {
public class UserService public class UserService
{ {
private readonly BaseController _baseController; private readonly BaseController _baseController;
const string BaseRoute = "v1/User/"; const string BaseRoute = "v1/Exper/";
public UserService(BaseController baseController) public UserService(BaseController baseController)
{ {
_baseController = baseController; _baseController = baseController;
} }
public async Task<bool> AddExper(AddUserDto request) public async Task<bool> AddExper(ADD_ExperDto request)
{ {
var response = await _baseController.Post($"{BaseRoute}AddExper", request); var response = await _baseController.Post($"{BaseRoute}AddExper", request);
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<PagingDto<HushianUserDto>?> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10) public async Task<List<Read_ExperDto>?> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10)
{ {
string route = $"{BaseRoute}GetExpersCompany?CompanyID={CompanyID}&PageIndex={PageIndex}&PageSize={PageSize}"; string route = $"{BaseRoute}GetExpersCompany/{CompanyID}&PageIndex={PageIndex}&PageSize={PageSize}";
var response = await _baseController.Get(route); var response = await _baseController.Get(route);
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
return await response.Content.ReadFromJsonAsync<PagingDto<HushianUserDto>>(); return await response.Content.ReadFromJsonAsync<List<Read_ExperDto>>();
}
return null;
}
public async Task<List<HushianUserDto>?> GetOnlineExpersCompany(int CompanyID)
{
string route = $"{BaseRoute}GetOnlineExpersCompany?CompanyID={CompanyID}";
var response = await _baseController.Get(route);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadFromJsonAsync<List<HushianUserDto>>();
} }
return null; return null;
} }
//-------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------------
public async Task<PagingDto<HushianUserDto>?> GetUsersCompanyFromManager(int PageIndex = 1, int PageSize = 10) public async Task<bool> EditUserYourself(Update_ExperDto request) //ویرایش کاربران توسط خود
{
string route = $"{BaseRoute}GetUsersCompany?PageIndex={PageIndex}&PageSize={PageSize}";
var response = await _baseController.Get(route);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadFromJsonAsync<PagingDto<HushianUserDto>>();
}
return null;
}
public async Task<bool> EditUserYourself(EditUserFromUserDto request) //ویرایش کاربران توسط خود
{ {
var response = await _baseController.Put($"{BaseRoute}EditUserYourself", request); var response = await _baseController.Put($"{BaseRoute}EditUserYourself", request);
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<HushianUserDto?> GetCurrentUser() //ویرایش کاربران توسط خود public async Task<Read_ExperDto?> GetCurrentUser() //ویرایش کاربران توسط خود
{ {
var response = await _baseController.Get($"{BaseRoute}GetCurrentUser"); var response = await _baseController.Get($"{BaseRoute}GetCurrentUser");
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
return await response.Content.ReadFromJsonAsync<HushianUserDto>(); return await response.Content.ReadFromJsonAsync<Read_ExperDto>();
} }
return null; return null;
} }
public async Task<bool> ExperEditingFromManager(EditUserFromUserDto request) //ویرایش کاربران توسط مدیرش public async Task<bool> ExperEditingFromManager(int ExperID,Update_ExperDto request) //ویرایش کاربران توسط مدیرش
{ {
var response = await _baseController.Put($"{BaseRoute}ExperEditingFromManager", request); var response = await _baseController.Put($"{BaseRoute}ExperEditingFromManager/{ExperID}", request);
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<bool> ChangePasswordYourself(ChangePasswordFromUserDto request) //تغییر کلمه عبور کاربران توسط خود public async Task<bool> ChangePasswordYourself(ChangePasswordDto request) //تغییر کلمه عبور کاربران توسط خود
{ {
var response = await _baseController.Put($"{BaseRoute}ChangePasswordYourself", request); var response = await _baseController.Put($"{BaseRoute}ChangePasswordYourself", request);
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<bool> ChangePasswordFromManager(int ExperID, ChangePasswordDto request) //تغییر کلمه عبور کاربران توسط خود
{
var response = await _baseController.Put($"{BaseRoute}ChangePasswordFromManager/{ExperID}", request);
return response.IsSuccessStatusCode;
}
public async Task<bool> CheckAvailableExperInCompany(string? ExperID=null) public async Task<bool> CheckAvailableExperInCompany(string? ExperID=null)
{ {
string route = $"{BaseRoute}CheckAvailableExperInCompany"; string route = $"{BaseRoute}CheckAvailableExperInCompany";
@@ -97,11 +83,7 @@ namespace HushianWebApp.Service
return response.IsSuccessStatusCode; return response.IsSuccessStatusCode;
} }
public async Task<bool> FreeExper()
{
var response = await _baseController.Delete($"{BaseRoute}FreeExper");
return response.IsSuccessStatusCode;
}
} }

View File

@@ -1,4 +1,4 @@
using Common.Dtos.User; using Common.Dtos.Verification;
using Common.Enums; using Common.Enums;
using System.Net.Http.Json; using System.Net.Http.Json;
@@ -18,10 +18,7 @@ namespace HushianWebApp.Service
string route = type switch string route = type switch
{ {
VerificationCodeType.PhoneNumberConfirmed => "PhoneNumberConfirmedFromUserName", VerificationCodeType.ForgetPassword => "ForgetPassword",
VerificationCodeType.ForgetPassword => "ForgetPasswordFromUserName",
VerificationCodeType.ChangeMobile => throw new NotImplementedException(),
VerificationCodeType.Login => throw new NotImplementedException(),
_ => throw new NotImplementedException() _ => throw new NotImplementedException()
}; };
var response = await _baseController.Get($"v1/Verification/{route}/{mobile}"); var response = await _baseController.Get($"v1/Verification/{route}/{mobile}");