Files
moadiran/Back/Controllers/TicketController.cs

122 lines
5.4 KiB
C#
Raw Normal View History

2024-05-01 15:42:21 +03:30
using Shared.DTOs;
2024-04-13 15:03:27 +03:30
using Back.Data.Models;
2024-04-14 16:09:36 +03:30
using Back.Services;
using Back.Validations;
2024-04-29 07:58:41 +03:30
using FluentValidation;
2024-04-13 15:03:27 +03:30
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Shared.DTOs;
2024-04-14 16:09:36 +03:30
using System.Security.Cryptography;
2024-04-17 15:49:34 +03:30
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
2024-05-01 15:42:21 +03:30
using Shared.DTOs.Serch;
2024-04-13 15:03:27 +03:30
namespace Back.Controllers
{
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class TicketController : ControllerBase
{
2024-04-14 16:09:36 +03:30
private readonly MobileValidation _mobilevalidation;
private readonly servTicket _servTicket;
private readonly ServValidatinMsg _servValidatinMsg;
2024-04-17 15:49:34 +03:30
private readonly servSendMsg _servSendMsg;
2024-05-01 15:42:21 +03:30
private readonly servCompany _servCompany;
private readonly servUser _servUser;
2024-04-17 15:49:34 +03:30
public TicketController(MobileValidation mobilevalidation, servTicket servTicket
2024-05-01 15:42:21 +03:30
, ServValidatinMsg servValidatinMsg, servSendMsg servSendMsg
, servCompany servCompany, servUser servUser)
2024-04-14 16:09:36 +03:30
{
_mobilevalidation = mobilevalidation;
_servTicket = servTicket;
_servValidatinMsg = servValidatinMsg;
2024-04-17 15:49:34 +03:30
_servSendMsg = servSendMsg;
2024-05-01 15:42:21 +03:30
_servUser = servUser;
_servCompany = servCompany;
2024-04-14 16:09:36 +03:30
}
2024-05-01 15:42:21 +03:30
[HttpPost("GetAll")]
public async Task<ActionResult<PagingDto<TicketDTO>>> GetAll(ItemSerchGetTicket itemSerch)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
return Ok(await _servTicket.GetAll(user.RolUsers.First().CompanyID, itemSerch));
}
[HttpGet("GetSubTicket/{TicketID}")]
public async Task<ActionResult<ICollection<SubTicketDTO>>> GetSubTicket(int TicketID)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
2024-04-13 15:03:27 +03:30
2024-05-01 15:42:21 +03:30
return Ok(await _servTicket.GetSubTicket(user.RolUsers.First().CompanyID, TicketID));
}
[HttpPost("NewTicket")]
public async Task<ActionResult<int>> NewTicket(CTicketDto item)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
item.CompanyID = user.RolUsers.First().CompanyID.ToString();
var res = await _servTicket.NewTicket(item);
return Ok(res != null);
}
[HttpPost("AddSubicket")]
public async Task<ActionResult<int>> AddSubicket(AddSubTicket item)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var Ticket = await _servTicket.GetTicketorgbyTicketID(user.RolUsers.First().CompanyID,item.TicketID);
if (Ticket==null)
return NotFound(new List<string>() { "تیکت یافت نشد" });
if (!string.IsNullOrEmpty(Ticket.EndDate)) return BadRequest(new List<string>() { "این تیکت بسته شده" });
var subTicket = await _servTicket.AddSubTicket(item);
Ticket.Status = StatusTicket.Awaitingreview;
await _servTicket.UpdateTicket(Ticket);
return Ok(subTicket);
}
[HttpPut("CancelTicket/{TicketID}")]
public async Task<ActionResult<bool>> CancelTicket(int TicketID)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var Ticket = await _servTicket.GetTicketorgbyTicketID(user.RolUsers.First().CompanyID,TicketID);
if (Ticket == null)
return NotFound(new List<string>() { "تیکت یافت نشد" });
if (!string.IsNullOrEmpty(Ticket.EndDate)) return BadRequest("این تیکت قبلا بسته شده");
Ticket.Status = StatusTicket.optout;
return Ok(await _servTicket.UpdateTicket(Ticket));
}
2024-04-13 15:03:27 +03:30
[HttpPost("NewTicketNoAuthentication")]
[AllowAnonymous]
public async Task<ActionResult<int>> NewTicketNoAuthentication(CTicketNoAuthenticationDto item)
{
2024-05-01 15:42:21 +03:30
var resultValidationmodel = await _mobilevalidation.ValidateAsync(Tuple.Create(item.Mobile, ActionMobileValidation.No));
2024-04-14 16:09:36 +03:30
if (!resultValidationmodel.IsValid)
return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList());
2024-05-01 15:42:21 +03:30
var pid = await _servTicket.NewPepole(item.FullName, item.Mobile);
2024-04-14 16:09:36 +03:30
item.CompanyID = pid.Value.ToString();
var Ticket = await _servTicket.NewTicket(item, StatusTicket.unknownPerson);
2024-05-01 15:42:21 +03:30
var ID = await _servValidatinMsg.GenerateCode(new VerificationCode
2024-04-14 16:09:36 +03:30
{
prm = Ticket.ID.ToString(),
val = item.Mobile,
2024-05-01 15:42:21 +03:30
Type = "NewTicketNoAuthentication"
2024-04-14 16:09:36 +03:30
});
2024-04-17 15:49:34 +03:30
_servSendMsg.Authentication(item.Mobile, ID.ToString());
2024-04-14 22:19:39 +03:30
return Ticket == null ? BadRequest() : Ok(ID);
2024-04-13 15:03:27 +03:30
}
}
}