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 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 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 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 { "یافت نشد" }); } [HttpGet("GetCurrentExper")] [Authorize(Roles = "Exper")] public async Task 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 { "یافت نشد" }); } [HttpPut("ExperEditingFromManager/{ExperID}")] //ویرایش کارشناس توسط مدیرش [Authorize(Roles = "Company")] public async Task ExperEditingFromManager(int ExperID,[FromBody] Update_ExperDto editUser) { var response = await _experService.UpdateExper(editUser, ExperID); return response ? NoContent() : BadRequest(new List { "یافت نشد" }); } //--- [HttpPut("ChangePasswordYourself")] //تغییر کلمه عبور کاربران توسط خود [Authorize(Roles = "Exper")] public async Task 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 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 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 { "یافت نشد"}); } [HttpDelete("DeleteExperFromManager/{ExperID}")] [Authorize(Roles = "Company")] public async Task 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 { "یافت نشد" }); } } }