...
This commit is contained in:
21
Presentation/Hushian.WebApi/ChatNotificationHub.cs
Normal file
21
Presentation/Hushian.WebApi/ChatNotificationHub.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
namespace Hushian.Application.Services
|
||||
{
|
||||
// Hubs/ChatNotificationHub.cs
|
||||
public class ChatNotificationHub : Hub
|
||||
{
|
||||
// انتخابی: نگهداری کاربران متصل (اختیاری برای این کاربرد)
|
||||
|
||||
public override Task OnConnectedAsync()
|
||||
{
|
||||
//var userId = Context.UserIdentifier;
|
||||
//// نگهداری یا ثبت اتصال کاربر اگر نیاز باشد
|
||||
return base.OnConnectedAsync();
|
||||
}
|
||||
|
||||
public override Task OnDisconnectedAsync(Exception? exception)
|
||||
{
|
||||
return base.OnDisconnectedAsync(exception);
|
||||
}
|
||||
}
|
||||
}
|
53
Presentation/Hushian.WebApi/Controllers/v1/AuthController.cs
Normal file
53
Presentation/Hushian.WebApi/Controllers/v1/AuthController.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using Common.Models.Auth;
|
||||
using Common.Models.Auth.CompanySide;
|
||||
using Common.Models.Auth.UserSide;
|
||||
using Hushian.Application.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
public class AuthController : ControllerBase
|
||||
{
|
||||
private readonly AuthService _authService;
|
||||
private readonly VerificationService _verificationService;
|
||||
public AuthController(AuthService authService, VerificationService verificationService)
|
||||
{
|
||||
_authService = authService;
|
||||
_verificationService = verificationService;
|
||||
}
|
||||
|
||||
[HttpPost("loginCompanySide")]
|
||||
public async Task<ActionResult<AuthResponse>> login([FromBody] AuthRequestFromCompanySide request)
|
||||
{
|
||||
var response = await _authService.AuthenticationFromCompanySide(request);
|
||||
if (response.Success) return Ok(response.Value);
|
||||
else return BadRequest(response.Errors);
|
||||
}
|
||||
[HttpPost("AuthenticationFromUser")]
|
||||
public async Task<ActionResult<int>> AuthenticationFromUser([FromBody] AuthRequestFromUserSide request)
|
||||
{
|
||||
var response = await _authService.AuthenticationFromUserSide(request);
|
||||
if (response.Success) return Ok(response.Value);
|
||||
else return BadRequest(response.Errors);
|
||||
}
|
||||
[HttpPut("UserLoginVerification/{ID}/{Code}")]
|
||||
public async Task<ActionResult<AuthResponse>> UserLoginVerification(int ID,string Code)
|
||||
{
|
||||
var response = await _verificationService.VerificationCode(new Common.Dtos.Verification.ConfirmedCodeDto()
|
||||
{ code =Code,codeType=Common.Enums.VerificationCodeType.Login,Id=ID});
|
||||
|
||||
if (response.Success) return Ok(response.Value);
|
||||
else return BadRequest(response.Errors);
|
||||
}
|
||||
[HttpGet("IsOnline")]
|
||||
[Authorize]
|
||||
public async Task<ActionResult> IsOnline()
|
||||
{
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
using Common.Dtos.Company;
|
||||
using Hushian.Application.Constants;
|
||||
using Hushian.Application.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
public class CompanyController : ControllerBase
|
||||
{
|
||||
private readonly CompanyService _companyService;
|
||||
|
||||
public CompanyController(CompanyService companyService)
|
||||
{
|
||||
_companyService = companyService;
|
||||
}
|
||||
|
||||
[HttpPost("NewCompany")]
|
||||
public async Task<ActionResult<int>> NewCompany([FromBody] RegisterCompanyDto request)
|
||||
{
|
||||
var response = await _companyService.RegisterCompany(request);
|
||||
return response.Success ? Ok(response.Value)
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpGet("GetCompany/{CompanyID}")]
|
||||
public async Task<ActionResult<ReadANDUpdate_CompanyDto>> GetCompany(int CompanyID)
|
||||
{
|
||||
var response = await _companyService.GETCompanyinformation(CompanyID);
|
||||
return response!=null ? Ok(response): NotFound();
|
||||
}
|
||||
[HttpPut("UpdateCompany")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> UpdateCompany([FromBody] ReadANDUpdate_CompanyDto model)
|
||||
{
|
||||
string CompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
var response = await _companyService.EditCompany(model,Convert.ToInt32(CompanyID));
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,162 @@
|
||||
using Common.Dtos.Conversation;
|
||||
using Common.Enums;
|
||||
using Hushian.Application.Constants;
|
||||
using Hushian.Application.Services;
|
||||
using Hushian.Domain.Entites;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
public class ConversationController : ControllerBase
|
||||
{
|
||||
private readonly ConversationService _conversationService;
|
||||
private readonly CompanyService _companyService;
|
||||
private readonly ExperService _experService;
|
||||
public ConversationController(ConversationService conversationService, CompanyService companyService)
|
||||
{
|
||||
_conversationService = conversationService;
|
||||
_companyService = companyService;
|
||||
}
|
||||
|
||||
[HttpGet("MyConversation")]
|
||||
[Authorize(Roles = "Company,Exper")]
|
||||
public async Task<ActionResult> MyConversation(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 _conversationService.GetConversationByExperID(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 _conversationService.GetConversationByCompanyID(CompanyID, status);
|
||||
return Ok(response);
|
||||
}
|
||||
return Forbid();
|
||||
|
||||
}
|
||||
|
||||
[HttpGet("ConversationAwaitingOurResponse")]
|
||||
[Authorize(Roles = "Company,Exper")]
|
||||
public async Task<ActionResult> ConversationAwaitingOurResponse()
|
||||
{
|
||||
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 _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)
|
||||
{
|
||||
string UserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
var response = await _conversationService.NewConversation(conversation);
|
||||
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)
|
||||
{
|
||||
|
||||
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 _conversationService.NewConversationResponse(ConversationItem, ExperID);
|
||||
return Response.Success ? Ok(Response.Value)
|
||||
: BadRequest(Response.Errors);
|
||||
}
|
||||
[HttpPut("MarkAsReadConversationItem/{ConversationItemID}")]
|
||||
[Authorize(Roles = "Company,User,Exper")]
|
||||
public async Task<ActionResult> MarkAsReadConversationItem(int ConversationItemID)
|
||||
{
|
||||
int? ExperID = null;
|
||||
ConversationType Type = ConversationType.UE;
|
||||
if (User.IsInRole("Exper"))
|
||||
{
|
||||
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
ExperID = Convert.ToInt32(strExperID);
|
||||
Type = ConversationType.EU;
|
||||
}
|
||||
|
||||
else if (User.IsInRole("User"))
|
||||
{
|
||||
Type = ConversationType.UE;
|
||||
}
|
||||
else if (User.IsInRole("Company"))
|
||||
{
|
||||
Type = ConversationType.CU;
|
||||
}
|
||||
else return Unauthorized();
|
||||
|
||||
return await _conversationService.MarkAsReadConversationItem(ConversationItemID, Type, ExperID) ? NoContent()
|
||||
: BadRequest(new List<string>() { "خطا در بروزرسانی گفتگو" });
|
||||
|
||||
}
|
||||
[HttpGet("ConversationIsFinish/{ConversationID}")]
|
||||
[Authorize(Roles = "Company,Exper")]
|
||||
public async Task<ActionResult> ConversationIsFinish(int ConversationID)
|
||||
{
|
||||
return await _conversationService.FinishConversation(ConversationID) ? NoContent()
|
||||
: BadRequest(new List<string> { "خطا در بروزرسانی وضعیت" });
|
||||
}
|
||||
[HttpGet("CountQueueCompany/{CompanyID}")]
|
||||
[Authorize]
|
||||
public async Task<ActionResult<int>> GetCountQueueCompany(int CompanyID, int GroupID)
|
||||
{
|
||||
return Ok(await _conversationService.GetCountQueueCompany(CompanyID, GroupID));
|
||||
}
|
||||
[HttpGet("ConversationFromUserSide/{CompanyID}")]
|
||||
[Authorize(Roles = "User")]
|
||||
public async Task<ActionResult> GetConversationFromUserSide(int CompanyID)
|
||||
{
|
||||
string strUserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int UserID = Convert.ToInt32(strUserID);
|
||||
var response = await _conversationService.GEtConversation(CompanyID, UserID);
|
||||
return Ok(response) ;
|
||||
}
|
||||
}
|
||||
}
|
118
Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs
Normal file
118
Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
|
||||
using Azure;
|
||||
using Common.Dtos;
|
||||
using Common.Dtos.Exper;
|
||||
using Hushian.Application.Constants;
|
||||
using Hushian.Application.Services;
|
||||
using Hushian.Domain.Entites;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
public class ExperController : ControllerBase
|
||||
{
|
||||
private readonly ExperService _experService;
|
||||
|
||||
|
||||
[HttpPost("AddExper")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> AddExper([FromBody] ADD_ExperDto userDto)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
var response = await _experService.ADDExper(userDto, CompanyID);
|
||||
return response.Success ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpGet("GetExpersCompany/{CompanyID}")]
|
||||
[Authorize]
|
||||
public async Task<ActionResult> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10)
|
||||
{
|
||||
var response = await _experService.GetExpersInCompany(CompanyID);
|
||||
return Ok(response);
|
||||
|
||||
}
|
||||
|
||||
[HttpPut("EditUserYourself")] //ویرایش کاربران توسط خود
|
||||
[Authorize(Roles = "Exper")]
|
||||
public async Task<ActionResult> EditUserYourself([FromBody] Update_ExperDto editUser)
|
||||
{
|
||||
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);
|
||||
return response ? NoContent()
|
||||
: BadRequest(new List<string> { "یافت نشد" });
|
||||
}
|
||||
[HttpGet("GetCurrentExper")]
|
||||
[Authorize(Roles = "Exper")]
|
||||
public async Task<ActionResult> GetCurrentUser()
|
||||
{
|
||||
string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int ExperID = Convert.ToInt32(strExperID);
|
||||
|
||||
var response = await _experService.GetInfoExper(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)
|
||||
{
|
||||
var response = await _experService.UpdateExper(editUser, ExperID);
|
||||
return response ? NoContent()
|
||||
: BadRequest(new List<string> { "یافت نشد" });
|
||||
}
|
||||
//---
|
||||
[HttpPut("ChangePasswordYourself")] //تغییر کلمه عبور کاربران توسط خود
|
||||
[Authorize(Roles = "Exper")]
|
||||
public async Task<ActionResult> ChangePasswordYourself([FromBody] ChangePasswordDto item)
|
||||
{
|
||||
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);
|
||||
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)
|
||||
{
|
||||
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);
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpPut("ChangeAvailableExperFromManager/{ExperID}")] //تغییر وضعیت در دسترس بودن یا نبودن کارشناس توسط مدیرش
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> ChangeAvailableExperFromManager(int ExperID, bool Available)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
|
||||
|
||||
var response = await _experService.ChangeAvailableExper(ExperID,CompanyID,Available);
|
||||
return response ? NoContent()
|
||||
: BadRequest(new List<string> { "یافت نشد"});
|
||||
}
|
||||
[HttpDelete("DeleteExperFromManager/{ExperID}")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> DeleteExperFromManager(int ExperID)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
|
||||
|
||||
var response = await _experService.DeleteExper(ExperID, CompanyID);
|
||||
return response ? NoContent()
|
||||
: BadRequest(new List<string> { "یافت نشد" });
|
||||
}
|
||||
|
||||
}
|
||||
}
|
119
Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs
Normal file
119
Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using Common.Dtos.Exper;
|
||||
using Common.Dtos.Group;
|
||||
using Hushian.Application.Constants;
|
||||
using Hushian.Application.Services;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
public class GroupController : ControllerBase
|
||||
{
|
||||
private readonly GroupService _groupService;
|
||||
private readonly CompanyService _companyService;
|
||||
public GroupController(GroupService groupService, CompanyService companyService)
|
||||
{
|
||||
_groupService = groupService;
|
||||
_companyService = companyService;
|
||||
}
|
||||
|
||||
[HttpPost("AddGroup")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> AddGroup([FromBody] ADD_GroupDto Group)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
var response = await _groupService.NewGroup(Group, CompanyID);
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpPut("UpdateGroup")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> UpdateGroup([FromBody] Update_GroupDto Group)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
var response = await _groupService.UpdateGroup(Group, CompanyID);
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpPut("JoinExperToGroup/{GroupID}/{ExperID}")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> JoinExperToGroup(int GroupID, int ExperID)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
var response = await _groupService.JoinExperInGroup(GroupID, ExperID, CompanyID);
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpPut("UnJoinExperToGroup/{GroupID}/{ExperID}")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> UnJoinExperToGroup(int GroupID, int ExperID)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
var response = await _groupService.UnJoinExperInGroup(GroupID, ExperID, CompanyID);
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpDelete("DeleteGroup/{GroupID}")]
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> DeleteGroup(int GroupID)
|
||||
{
|
||||
string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
|
||||
int CompanyID = Convert.ToInt32(strCompanyID);
|
||||
var response = await _groupService.DeleteGroup(GroupID, CompanyID);
|
||||
return response.Success && response.Value ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
[HttpGet("GetGroupsCompany")]
|
||||
[Authorize]
|
||||
public async Task<ActionResult<List<Read_GroupDto>>> GetGroups(int? CompanyID)
|
||||
{
|
||||
|
||||
if (!CompanyID.HasValue)
|
||||
{
|
||||
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);
|
||||
}
|
||||
[HttpGet("GetGroupsFromExperID")]
|
||||
[Authorize]
|
||||
public async Task<ActionResult<List<Read_GroupDto>>> GetGroups(int ExperID)
|
||||
{
|
||||
var response = await _groupService.GetGroupsExper(ExperID);
|
||||
return Ok(response);
|
||||
}
|
||||
[HttpGet("GetExpersFromGroupID/{GroupID}")]
|
||||
public async Task<ActionResult<List<Read_ExperDto>>> GetExpersGroup(int GroupID)
|
||||
{
|
||||
var response = await _groupService.GetExpersFromGroupID(GroupID);
|
||||
return Ok(response);
|
||||
}
|
||||
//[HttpGet("GetOnlineExpersFromGroupID/{GroupID}")]
|
||||
//public async Task<ActionResult<AuthResponse>> GetOnlineExpersGroup(int GroupID)
|
||||
//{
|
||||
// var CompanyID = await _companyService.GetCompanyID(User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First());
|
||||
// var response = await _groupService.GetOnlineExpersGroup(GroupID, CompanyID.GetValueOrDefault());
|
||||
// return response.Success ? Ok(response.Value)
|
||||
// : BadRequest(response.Errors);
|
||||
//}
|
||||
[HttpPut("ChangeAvailableGroupFromManager/{GroupID}")] //تغییر وضعیت در دسترس بودن یا نبودن گروه' توسط مدیرش
|
||||
[Authorize(Roles = "Company")]
|
||||
public async Task<ActionResult> ChangeAvailableExperFromManager(int GroupID, bool Available)
|
||||
{
|
||||
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> { "یافت نشد"});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
11
Presentation/Hushian.WebApi/Controllers/v1/UserController.cs
Normal file
11
Presentation/Hushian.WebApi/Controllers/v1/UserController.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
public class UserController : ControllerBase
|
||||
{
|
||||
}
|
||||
}
|
@@ -0,0 +1,42 @@
|
||||
using Common.Dtos.Verification;
|
||||
using Hushian.Application.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Hushian.WebApi.Controllers.v1
|
||||
{
|
||||
[Route("api/v1/[controller]")]
|
||||
[ApiController]
|
||||
public class VerificationController : ControllerBase
|
||||
{
|
||||
private readonly VerificationService _verificationService;
|
||||
|
||||
public VerificationController(VerificationService verificationService)
|
||||
{
|
||||
_verificationService = verificationService;
|
||||
}
|
||||
|
||||
|
||||
//------ UserName by Exper - Mobile by Company
|
||||
[HttpGet("ForgetPassword/{input}")]
|
||||
public async Task<ActionResult<int>> GetIDAndSendCodeForForgetPasswordByUserID(string input)
|
||||
{
|
||||
var response = await _verificationService.GenerateCodeByForgetPassword(input);
|
||||
return response > 0 ? Ok(response)
|
||||
: BadRequest(new List<string> { "خطا در ارسال کد احراز"});
|
||||
}
|
||||
[HttpGet("ReSendCode/{ID}")]
|
||||
public async Task<ActionResult<int>> ReSendCodeByID(int ID)
|
||||
{
|
||||
var response = await _verificationService.ReSendCode(ID);
|
||||
return response ? NoContent()
|
||||
: BadRequest(new List<string> { "خطا در ارسال کد احراز" });
|
||||
}
|
||||
[HttpPost("ConfirmedCode")]
|
||||
public async Task<ActionResult> ConfirmedCode(ConfirmedCodeDto model)
|
||||
{
|
||||
var response = await _verificationService.VerificationCode(model);
|
||||
return response.Success ? NoContent()
|
||||
: BadRequest(response.Errors);
|
||||
}
|
||||
}
|
||||
}
|
20
Presentation/Hushian.WebApi/Hushian.WebApi.csproj
Normal file
20
Presentation/Hushian.WebApi/Hushian.WebApi.csproj
Normal file
@@ -0,0 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.7" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Common\Common.csproj" />
|
||||
<ProjectReference Include="..\..\Hushian.Application\Hushian.Application.csproj" />
|
||||
<ProjectReference Include="..\..\Infrastructure\Infrastructure\Hushian.Infrastructure.csproj" />
|
||||
<ProjectReference Include="..\..\Infrastructure\Persistence\Hushian.Persistence.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
6
Presentation/Hushian.WebApi/Hushian.WebApi.http
Normal file
6
Presentation/Hushian.WebApi/Hushian.WebApi.http
Normal file
@@ -0,0 +1,6 @@
|
||||
@Hushian.WebApi_HostAddress = http://localhost:5089
|
||||
|
||||
GET {{Hushian.WebApi_HostAddress}}/weatherforecast/
|
||||
Accept: application/json
|
||||
|
||||
###
|
33
Presentation/Hushian.WebApi/Program.cs
Normal file
33
Presentation/Hushian.WebApi/Program.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using Hushian.Application;
|
||||
using Hushian.Persistence;
|
||||
using Hushian.WebApi;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add services to the container.
|
||||
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
||||
builder.Services.AddOpenApi();
|
||||
|
||||
builder.Services.ConfigureApplicationServices(builder.Configuration);
|
||||
builder.Services.ConfigurePersistenceServices(builder.Configuration);
|
||||
builder.Services.AddSignalR();
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.MapOpenApi();
|
||||
}
|
||||
|
||||
|
||||
app.MapHub<ChatNotificationHub>("/chatNotificationHub");
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
app.UseCors(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
app.MapControllers();
|
||||
|
||||
app.Run();
|
23
Presentation/Hushian.WebApi/Properties/launchSettings.json
Normal file
23
Presentation/Hushian.WebApi/Properties/launchSettings.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||
"profiles": {
|
||||
"http": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": false,
|
||||
"applicationUrl": "http://localhost:5089",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"https": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": false,
|
||||
"applicationUrl": "https://localhost:7046;http://localhost:5089",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
8
Presentation/Hushian.WebApi/appsettings.Development.json
Normal file
8
Presentation/Hushian.WebApi/appsettings.Development.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
34
Presentation/Hushian.WebApi/appsettings.json
Normal file
34
Presentation/Hushian.WebApi/appsettings.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"ConnectionStrings": {
|
||||
"MainConnectionString": "Data Source=195.88.208.142;Initial Catalog=HushianDB;User ID=sa;Password=M439610m@;TrustServerCertificate=True",
|
||||
"UserManagementConnectionString": "Data Source=195.88.208.142;Initial Catalog=UserManagementDB;User ID=sa;Password=M439610m@;TrustServerCertificate=True"
|
||||
},
|
||||
"EmailSettings": {
|
||||
"ApiKey": "SendGrid_Key_Here",
|
||||
"FromName": "Leasing",
|
||||
"FromAddress": "Leasing"
|
||||
},
|
||||
"MessageSettings": {
|
||||
"UserName": "09119660045",
|
||||
"Password": "C54S2",
|
||||
"From": "50004001660045"
|
||||
},
|
||||
"aiSettings": {
|
||||
"url": "https://api.openai.com/v1/chat/completions",
|
||||
"apitoken": "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"
|
||||
|
||||
},
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"JwtSettings": {
|
||||
"Key": "84322CFB66934ECC86D547C5CF4F2EFC",
|
||||
"Audience": "MMRbnjd",
|
||||
"Issuer": "MMRbnjd",
|
||||
"DurationInMinutes": 60
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
Reference in New Issue
Block a user