Files
moadiran/Back/Controllers/VerificationController.cs
mmrbnjd 7b8127dc72 ...
2024-04-29 07:58:41 +03:30

129 lines
5.4 KiB
C#

using Back.Data.Models;
using Back.Services;
using Back.Validations;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Shared.DTOs;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace Back.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class VerificationController : ControllerBase
{
private readonly ServValidatinMsg _servValidatinMsg;
private readonly GetVerificationValidation _getVerificationValidation;
private readonly servSendMsg _servSendMsg;
private readonly servCompany _servCompany;
private readonly servUser _servUser;
public VerificationController(ServValidatinMsg servValidatinMsg, GetVerificationValidation getVerificationValidation
, servCompany servCompany, servSendMsg servSendMsg, servUser servUser)
{
_servValidatinMsg = servValidatinMsg;
_getVerificationValidation = getVerificationValidation;
_servCompany = servCompany;
_servSendMsg = servSendMsg;
_servUser = servUser;
}
[HttpGet("GetVerification/{ID}")]
[AllowAnonymous]
public async Task<ActionResult<VerificationCode>> GetVerification(int ID)
{
var resultValidationmodel = await _getVerificationValidation.ValidateAsync(ID);
if (!resultValidationmodel.IsValid)
return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList());
return Ok(new VerificationCodeDto {
ID = ID,
Code=0,
prm= _getVerificationValidation.verificationCode.prm,
Type= _getVerificationValidation.verificationCode.Type,
val= _getVerificationValidation.verificationCode.val
});;
}
[HttpGet("ReSend/{ID}")]
[AllowAnonymous]
public async Task<ActionResult> ReSend(int ID)
{
var resultValidationmodel = await _getVerificationValidation.ValidateAsync(ID);
if (!resultValidationmodel.IsValid)
return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList());
// _getVerificationValidation.verificationCode
switch (_getVerificationValidation.verificationCode.Type)
{
case "NewTicketNoAuthentication":
_servSendMsg.Authentication(_getVerificationValidation.verificationCode.val, ID.ToString());
break;
case "CompanyRegistration":
var company=await _servCompany.GetCompanyOrg(Convert.ToInt32(_getVerificationValidation.verificationCode.prm),false);
_servSendMsg.Authentication(company.Mobile, ID.ToString());
break;
case "ForgetPassword":
var user = await _servUser.ChangePasswordByMobile(_getVerificationValidation.verificationCode.prm, _getVerificationValidation.verificationCode.val);
_servSendMsg.Authentication(_getVerificationValidation.verificationCode.prm, ID.ToString());
break;
default:
return BadRequest("این نوع احراز تعریف نشده");
}
return NoContent();
}
[HttpPost("Submit")]
[AllowAnonymous]
public async Task<ActionResult<bool>> Submit(VerificationCodeDto item)
{
var VerificationCode= await _servValidatinMsg.GetVerificationCode(item.ID);
if (VerificationCode==null)
return NotFound("آیتمی یافت نشد");
if (VerificationCode.Code==item.Code)
{
if (VerificationCode.prm == item.prm && VerificationCode.val == item.val && VerificationCode.Type == item.Type)
{
bool Sucstatus = false;
switch (VerificationCode.Type)
{
case "NewTicketNoAuthentication":
Sucstatus = await _servValidatinMsg.SubmittedTicket(VerificationCode);
break;
case "CompanyRegistration":
//string UserID = VerificationCode.val;
Sucstatus = await _servValidatinMsg.SubmittedCompanyRegistration(VerificationCode);
// return Ok(await _servUser.UserAuthentication(UserID));
//else return BadRequest();
break;
default:
return BadRequest("این نوع احراز تعریف نشده");
}
if (Sucstatus)
await _servValidatinMsg.Delete(VerificationCode);
return Ok(Sucstatus);
}
else return BadRequest("اطلاعات شما منطبق با سامانه نیست");
}
else return BadRequest("کد احراز صحیح نمی باشد");
}
[HttpDelete("Remove/{ID}")]
[AllowAnonymous]
public async Task<ActionResult<bool>> Remove(int ID)
{
var VerificationCode = await _servValidatinMsg.GetVerificationCode(ID);
await _servValidatinMsg.Delete(VerificationCode);
return NoContent();
}
}
}