This commit is contained in:
mmrbnjd
2025-07-28 17:41:14 +03:30
parent 43b6e4e746
commit ea152671d6
13 changed files with 691 additions and 12 deletions

View File

@@ -0,0 +1,97 @@
using Common.Dtos.Conversation;
using Common.Enums;
using Hushian.Application.Constants;
using Hushian.Application.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Hushian.WebApi.Controllers.v1
{
[Route("api/v1/[controller]")]
[ApiController]
public class ChatController : ControllerBase
{
private readonly ChatService _chatService; private readonly ExperService _experService;
[HttpPost("MyChats")]
[Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> MyChats([FromBody] ConversationStatus status)
{
if (User.IsInRole("Exper"))
{
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int ExperID = Convert.ToInt32(strExperID);
var response = await _chatService.GeChatsByExperID(ExperID, status);
return Ok(response);
}
else if (User.IsInRole("Company"))
{
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int CompanyID = Convert.ToInt32(strCompanyID);
var response = await _chatService.GetChatsByCompanyID(CompanyID, status);
return Ok(response);
}
return Forbid();
}
[HttpGet("ChatsAwaitingOurResponse")]
[Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> ChatsAwaitingOurResponse()
{
int CompanyID = 0;
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 _chatService.ChatsAwaitingOurResponse(CompanyID);
return Ok(response);
}
[HttpPost("NewChatFromCurrentUser")]
public async Task<ActionResult> NewChatFromCurrentUser(ADD_ConversationDto conversation)
{
conversation.UserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => Convert.ToInt32(s.Value)).First();
var response = await _chatService.NewChat(conversation);
return response.Success ? Ok(response.Value)
: BadRequest(response.Errors);
}
[HttpPost("ADDChatResponse")]
[Authorize(Roles = "Company,User,Exper")]
public async Task<ActionResult> ADDChatResponse([FromBody] ADD_ConversationResponseDto ConversationItem)
{
int? ExperID = null;
if (User.IsInRole("Exper"))
{
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
ExperID = Convert.ToInt32(strExperID);
ConversationItem.Type = ConversationType.EU;
}
else if (User.IsInRole("User"))
{
ConversationItem.Type = ConversationType.UE;
}
else if (User.IsInRole("Company"))
{
ConversationItem.Type = ConversationType.CU;
}
else return Unauthorized();
var Response = await _chatService.ADDChatResponse(ConversationItem, ExperID);
return Response.Success ? Ok(Response.Value)
: BadRequest(Response.Errors);
}
}
}

View File

@@ -23,6 +23,7 @@ namespace Hushian.WebApi.Controllers.v1
_experService = experService;
}
//*
[HttpPost("MyConversation")]
[Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> MyConversation([FromBody]ConversationStatus status)
@@ -45,7 +46,7 @@ namespace Hushian.WebApi.Controllers.v1
return Forbid();
}
//*
[HttpGet("ConversationAwaitingOurResponse")]
[Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> ConversationAwaitingOurResponse()
@@ -67,12 +68,14 @@ namespace Hushian.WebApi.Controllers.v1
var response = await _conversationService.ConversationAwaitingOurResponse(CompanyID);
return Ok(response);
}
//*
[HttpGet("ConversationItems/{ConversationID}")]
[Authorize(Roles = "Company,Exper,User")]
public async Task<ActionResult> GetConversationItems(int ConversationID)
{
return Ok(await _conversationService.GetConversationItems(ConversationID));
}
//*
[HttpPost("NewConversationFromCurrentUser")]
public async Task<ActionResult> NewConversationFromCurrentUser(ADD_ConversationDto conversation)
{
@@ -81,6 +84,7 @@ namespace Hushian.WebApi.Controllers.v1
return response.Success ? Ok(response.Value)
: BadRequest(response.Errors);
}
//*
[HttpPost("ADDConversationResponse")]
[Authorize(Roles = "Company,User,Exper")]
public async Task<ActionResult> ADDConversationResponse([FromBody] ADD_ConversationResponseDto ConversationItem)
@@ -110,6 +114,7 @@ namespace Hushian.WebApi.Controllers.v1
return Response.Success ? Ok(Response.Value)
: BadRequest(Response.Errors);
}
//---------------------------------------------------------------------------------------------------------------------
[HttpPut("MarkAsReadConversationItem/{ConversationItemID}")]
[Authorize(Roles = "Company,User,Exper")]
public async Task<ActionResult> MarkAsReadConversationItem(int ConversationItemID)

View File

@@ -82,6 +82,27 @@ namespace Hushian.WebApi.Controllers.v1
var response = await _experService.GetInfoExper(ExperID);
return response != null ? Ok(response) : BadRequest(new List<string> { "یافت نشد" });
}
[HttpGet("GetCurrentUserInfo")]
[Authorize(Roles = "Exper,Company")]
public async Task<ActionResult> GetCurrentUserInfo()
{
int CompanyID = 0;
int? ExperID = null;
if (User.IsInRole("Exper"))
{
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
ExperID = Convert.ToInt32(strExperID);
}
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.GetCurrentUserInfo(CompanyID,ExperID);
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)

View File

@@ -80,14 +80,14 @@ 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);
CompanyID =await _experService.GetCompanyIDExper(ExperID);
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);
CompanyID = Convert.ToInt32(strCompanyID);
}
}
var response = await _groupService.GetGroupsCompany(CompanyID.Value);
@@ -100,6 +100,27 @@ namespace Hushian.WebApi.Controllers.v1
var response = await _groupService.GetGroupsExper(ExperID);
return Ok(response);
}
[HttpGet("GetGroups")]
[Authorize]
public async Task<ActionResult<List<Read_GroupDto>>> GetGroupsAnon()
{
if (User.IsInRole("Exper"))
{
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int ExperID = Convert.ToInt32(strExperID);
var response = await _groupService.GetGroupsExper(ExperID);
return Ok(response);
}
else if (User.IsInRole("Company"))
{
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int CompanyID = Convert.ToInt32(strCompanyID);
var response = await _groupService.GetGroupsCompany(CompanyID);
return Ok(response);
}
return NotFound();
}
[HttpGet("GetExpersFromGroupID/{GroupID}")]
public async Task<ActionResult<List<Read_ExperDto>>> GetExpersGroup(int GroupID)
{
@@ -120,10 +141,10 @@ namespace Hushian.WebApi.Controllers.v1
{
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int CompanyID = Convert.ToInt32(strCompanyID);
var response = await _groupService.ChangeAvailableGroup(new Common.Dtos.Exper.ChangeAvailable_GroupDto()
{ Available=Available,ID=GroupID}, CompanyID);
return response? NoContent()
: BadRequest(new List<string> { "یافت نشد"});
var response = await _groupService.ChangeAvailableGroup(new Common.Dtos.Exper.ChangeAvailable_GroupDto()
{ Available = Available, ID = GroupID }, CompanyID);
return response ? NoContent()
: BadRequest(new List<string> { "یافت نشد" });
}
}