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;
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 CompanyService _companyService;
private readonly ExperService _experService;
public ConversationController(ConversationService conversationService, CompanyService companyService)
public ConversationController(ConversationService conversationService, CompanyService companyService, ExperService experService)
{
_conversationService = conversationService;
_companyService = companyService;
_experService = experService;
}
[HttpGet("MyConversation")]
[HttpPost("MyConversation")]
[Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> MyConversation(ConversationStatus status)
{

View File

@@ -7,6 +7,7 @@ using Hushian.Application.Services;
using Hushian.Domain.Entites;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.Design;
using System.IdentityModel.Tokens.Jwt;
namespace Hushian.WebApi.Controllers.v1
@@ -17,6 +18,10 @@ namespace Hushian.WebApi.Controllers.v1
{
private readonly ExperService _experService;
public ExperController(ExperService experService)
{
_experService = experService;
}
[HttpPost("AddExper")]
[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)
{
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();
int ExperID = Convert.ToInt32(strExperID);
var response = await _experService.UpdateExper(editUser,ExperID);
var response = await _experService.UpdateExper(editUser, ExperID);
return response ? NoContent()
: BadRequest(new List<string> { "یافت نشد" });
}
@@ -56,11 +61,11 @@ namespace Hushian.WebApi.Controllers.v1
int ExperID = Convert.ToInt32(strExperID);
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}")] //ویرایش کارشناس توسط مدیرش
[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);
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();
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()
: BadRequest(response.Errors);
}
[HttpPut("ChangePasswordFromManager/{ExperID}")] //تغییر کلمه عبور کارشناس توسط مدیرش
[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();
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()
: BadRequest(response.Errors);
}
@@ -97,9 +102,9 @@ namespace Hushian.WebApi.Controllers.v1
int CompanyID = Convert.ToInt32(strCompanyID);
var response = await _experService.ChangeAvailableExper(ExperID,CompanyID,Available);
var response = await _experService.ChangeAvailableExper(ExperID, CompanyID, Available);
return response ? NoContent()
: BadRequest(new List<string> { "یافت نشد"});
: BadRequest(new List<string> { "یافت نشد" });
}
[HttpDelete("DeleteExperFromManager/{ExperID}")]
[Authorize(Roles = "Company")]
@@ -113,6 +118,21 @@ namespace Hushian.WebApi.Controllers.v1
return response ? NoContent()
: 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;
}
//------ UserName by Exper - Mobile by Company
[HttpGet("ForgetPassword/{input}")]
public async Task<ActionResult<int>> GetIDAndSendCodeForForgetPasswordByUserID(string input)

View File

@@ -1,9 +1,7 @@
using BlazorBootstrap;
using Common.Dtos.User;
using Common.Models.Auth;
using Common.Models.Auth.CompanySide;
using Common.Models.Auth.UserSide;
using Common.Models.Identity;
using HushianWebApp.Services;
using Microsoft.AspNetCore.Components;
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;
namespace HushianWebApp.Service
@@ -13,27 +14,27 @@ namespace HushianWebApp.Service
_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)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>();
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
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)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>();
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new();
}
public async Task<List<ConversationDto>> ConversationAwaitingOurResponse()
public async Task<List<Read_ConversationDto>> ConversationAwaitingOurResponse()
{
var response = await _baseController.Get($"{BaseRoute}ConversationAwaitingOurResponse");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>();
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new();
}
@@ -43,36 +44,28 @@ namespace HushianWebApp.Service
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}");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationItemDto>>();
return await response.Content.ReadFromJsonAsync<List<Read_ConversationResponseDto>>();
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,
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)
{
var response = await _baseController.Put($"{BaseRoute}ConversationIsFinish/{ConversationID}");
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)
{
var response = await _baseController.Get($"{BaseRoute}CountQueueCompany/{CompanyID}?GroupID={GroupID}");
@@ -81,11 +74,11 @@ namespace HushianWebApp.Service
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}");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<ConversationDto>>();
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new();
}

View File

@@ -44,7 +44,7 @@ namespace HushianWebApp.Service
var response = await _baseController.Get($"{BaseRoute}GetGroupsCompany");
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadFromJsonAsync<List<GroupDto>>();
return await response.Content.ReadFromJsonAsync<List<Read_GroupDto>>();
}
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
{
public class UserService
{
private readonly BaseController _baseController;
const string BaseRoute = "v1/User/";
const string BaseRoute = "v1/Exper/";
public UserService(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);
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);
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;
}
//--------------------------------------------------------------------------------------------------------------
public async Task<PagingDto<HushianUserDto>?> GetUsersCompanyFromManager(int PageIndex = 1, int PageSize = 10)
{
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) //ویرایش کاربران توسط خود
public async Task<bool> EditUserYourself(Update_ExperDto request) //ویرایش کاربران توسط خود
{
var response = await _baseController.Put($"{BaseRoute}EditUserYourself", request);
return response.IsSuccessStatusCode;
}
public async Task<HushianUserDto?> GetCurrentUser() //ویرایش کاربران توسط خود
public async Task<Read_ExperDto?> GetCurrentUser() //ویرایش کاربران توسط خود
{
var response = await _baseController.Get($"{BaseRoute}GetCurrentUser");
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadFromJsonAsync<HushianUserDto>();
return await response.Content.ReadFromJsonAsync<Read_ExperDto>();
}
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;
}
public async Task<bool> ChangePasswordYourself(ChangePasswordFromUserDto request) //تغییر کلمه عبور کاربران توسط خود
public async Task<bool> ChangePasswordYourself(ChangePasswordDto request) //تغییر کلمه عبور کاربران توسط خود
{
var response = await _baseController.Put($"{BaseRoute}ChangePasswordYourself", request);
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)
{
string route = $"{BaseRoute}CheckAvailableExperInCompany";
@@ -97,11 +83,7 @@ namespace HushianWebApp.Service
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 System.Net.Http.Json;
@@ -18,10 +18,7 @@ namespace HushianWebApp.Service
string route = type switch
{
VerificationCodeType.PhoneNumberConfirmed => "PhoneNumberConfirmedFromUserName",
VerificationCodeType.ForgetPassword => "ForgetPasswordFromUserName",
VerificationCodeType.ChangeMobile => throw new NotImplementedException(),
VerificationCodeType.Login => throw new NotImplementedException(),
VerificationCodeType.ForgetPassword => "ForgetPassword",
_ => throw new NotImplementedException()
};
var response = await _baseController.Get($"v1/Verification/{route}/{mobile}");