This commit is contained in:
mmrbnjd
2024-04-14 16:09:36 +03:30
parent eaf3264c6c
commit f7e3f3b02a
9 changed files with 266 additions and 38 deletions

View File

@@ -1,9 +1,12 @@
using Back.Common.Enums;
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 System.Security.Cryptography;
namespace Back.Controllers
{
@@ -12,12 +15,42 @@ namespace Back.Controllers
[ApiController]
public class TicketController : ControllerBase
{
private readonly MobileValidation _mobilevalidation;
private readonly servTicket _servTicket;
private readonly ServValidatinMsg _servValidatinMsg;
public TicketController(MobileValidation mobilevalidation, servTicket servTicket, ServValidatinMsg servValidatinMsg)
{
_mobilevalidation = mobilevalidation;
_servTicket = servTicket;
_servValidatinMsg = servValidatinMsg;
}
[HttpPost("NewTicketNoAuthentication")]
[AllowAnonymous]
public async Task<ActionResult<int>> NewTicketNoAuthentication(CTicketNoAuthenticationDto item)
{
return Ok();
var resultValidationmodel = await _mobilevalidation.ValidateAsync(item.Mobile);
if (!resultValidationmodel.IsValid)
return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList());
var pid=await _servTicket.NewPepole(item.FullName,item.Mobile);
item.CompanyID = pid.Value.ToString();
var Ticket = await _servTicket.NewTicket(item, StatusTicket.unknownPerson);
var code= await _servValidatinMsg.GenerateCode(new VerificationCode
{
ID = 0,
prm = Ticket.ID.ToString(),
val = item.Mobile,
Type = "NewTicketNoAuthentication"
});
return Ticket == null ? BadRequest() : Ok(new VerificationCodeDto
{
prm = Ticket.ID.ToString(),
val = item.Mobile,
Type = "NewTicketNoAuthentication"
});
}
}
}

View File

@@ -21,6 +21,8 @@ builder.Services.AddScoped(typeof(IAsyncRepository<>), typeof(RepositoryBase<>))
builder.Services.AddScoped<Back.Services.ServBase>();
builder.Services.AddScoped<MobileValidation> ();
builder.Services.AddScoped<Service.Main>();
builder.Services.AddScoped<servTicket > ();
builder.Services.AddScoped < ServValidatinMsg>();
string origins = "OriginTaxPayer";
builder.Services.AddCors(options =>
{

View File

@@ -0,0 +1,35 @@
using Back.Data.Contracts;
using Back.Data.Models;
using Microsoft.EntityFrameworkCore;
namespace Back.Services
{
public class ServValidatinMsg
{
private readonly IAsyncRepository<VerificationCode> _verificationCodeRepo;
public ServValidatinMsg(IAsyncRepository<VerificationCode> verificationCodeRepo)
{
_verificationCodeRepo = verificationCodeRepo;
}
public async Task<VerificationCode> GetCodeByPrm(string Prm)
{
return await _verificationCodeRepo.Get(w => w.prm == Prm).FirstOrDefaultAsync();
}
public async Task<VerificationCode> GetRegistrationCode(int ID)
{
return await _verificationCodeRepo.Get(w => w.ID == ID).FirstOrDefaultAsync();
}
public async Task<int> GenerateCode(VerificationCode code)
{
code.ID = Random.Shared.Next(1000, 9000);
while (await GetRegistrationCode(code.ID) != null)
code.ID = Random.Shared.Next(1000, 9000);
await _verificationCodeRepo.AddAsync(code);
return code.ID;
}
}
}

104
Back/Services/servTicket.cs Normal file
View File

@@ -0,0 +1,104 @@
using Back.Common;
using Back.Common.Enums;
using Back.Data.Contracts;
using Back.Data.Models;
using Shared.DTOs;
namespace Back.Services
{
public class servTicket
{
private readonly IAsyncRepository<TiceketUnknownPeople> _ticketUnknownPeopleRepo;
private readonly IAsyncRepository<Ticket> _ticketRepo;
private readonly IAsyncRepository<SubTicket> _subticketRepo;
public servTicket(IAsyncRepository<TiceketUnknownPeople> ticketUnknownPeopleRepo
,IAsyncRepository<Ticket> ticketRepo
,IAsyncRepository<SubTicket> subticketRepo
)
{
_ticketUnknownPeopleRepo = ticketUnknownPeopleRepo;
_ticketRepo = ticketRepo;
_subticketRepo = subticketRepo;
}
public async Task<int?> NewPepole(string FullName, string Mobile)
{
try
{
var item=await _ticketUnknownPeopleRepo.AddAsync(new TiceketUnknownPeople
{
FullName = FullName,
Mobile = Mobile
});
//_contextMongodb.InsertItem(new SysLog()
//{
// TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
// Datetime = DateTime.Now.ConvertMiladiToShamsi(),
// Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/NewPepole",
// Value = JsonConvert.SerializeObject(item),
// Route = _httpContextAccessor.HttpContext.Request.Path,
// Type = "User"
//});
return item.ID;
}
catch (Exception ex)
{
//_contextMongodb.InsertItem(new SysLog()
//{
// TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
// Datetime = DateTime.Now.ConvertMiladiToShamsi(),
// Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/NewPepole",
// Value = ex.Message,
// Route = _httpContextAccessor.HttpContext.Request.Path,
// Type = "catch"
//});
return 0;
}
}
public async Task<Ticket?> NewTicket(CTicketDto item, StatusTicket status = StatusTicket.Awaitingreview)
{
try
{
var ticket=await _ticketRepo.AddAsync(new Ticket
{
CompanyIDOrMobile = item.CompanyID,
CreateDate = DateTime.Now.ConvertMiladiToShamsi(),
CreateTime = DateTime.Now.ToString("hh:mm tt"),
Title = item.Title,
Status = status
});
await _subticketRepo.AddAsync(new SubTicket
{
Date = DateTime.Now.ConvertMiladiToShamsi(),
Time = DateTime.Now.ToString("hh:mm tt"),
TicketID = ticket.ID,
Text = item.Text,
Type = SideType.Customer
});
//_contextMongodb.InsertItem(new SysLog()
//{
// TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
// Datetime = DateTime.Now.ConvertMiladiToShamsi(),
// Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/NewTicket",
// Value = JsonConvert.SerializeObject(item),
// Route = _httpContextAccessor.HttpContext.Request.Path,
// Type = "User"
//});
return ticket;
}
catch (Exception ex)
{
//_contextMongodb.InsertItem(new SysLog()
//{
// TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
// Datetime = DateTime.Now.ConvertMiladiToShamsi(),
// Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/NewTicket",
// Value = ex.Message,
// Route = _httpContextAccessor.HttpContext.Request.Path,
// Type = "catch"
//});
return null;
}
}
}
}