using Common.Dtos; using Common.Dtos.Exper; using Hushian.Application.Contracts.Persistence; using Hushian.Application.Models; using Hushian.Application.Validation; using Hushian.Domain.Entites; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hushian.Application.Services { public class ExperService { private readonly IGenericRepository _CompanyRepository; private readonly IGenericRepository _ExperRepository; private readonly VerificationService _VerificationService; public async Task> ADDExper(ADD_ExperDto dto, int CompanyID) { var Response = new ResponseBase(); #region Validation bool validate = true; var errors = new List(); validate = dto.Password.CheckLawPassword(ref errors); #endregion if (validate) { try { string UserName = $"E/{CompanyID.ToString("00")}/{_ExperRepository.Get().Count(c => c.CompanyID == CompanyID).ToString("0000")}"; Response.Success = Response.Value = await _ExperRepository.ADDBool(new Exper() { CompanyID = CompanyID, FullName = dto.FullName, Password = dto.Password.GetHash(), UserName = UserName }); } catch (Exception ex) { Response.Errors.Add("خطای سیستمی کد 01"); } } else { Response.Errors.AddRange(errors); } return Response; } //Get Info // Update public async Task> ChangePasswordExperFromExper(ChangePasswordDto model, int ExperID) { ResponseBase Response = new(); var exper = await _ExperRepository.Get().FirstOrDefaultAsync(f => f.ID == ExperID); if (string.IsNullOrEmpty(model.OldPassWord) || model.OldPassWord.GetHash() != exper.Password) { Response.Errors.Add("کلمه عبور فعلی صحیح نمی باشد"); } else { exper.Password = model.NewPassWord.GetHash(); Response.Value = await _ExperRepository.UPDATEBool(exper); if (!Response.Value) Response.Errors.Add("خطا در ذخیره سازی"); else Response.Success = true; } return Response; } public async Task> ChangePasswordExperFromCompanyManaget(ChangePasswordDto model, int ExperID, int CompanyID) { ResponseBase Response = new(); var exper = await _ExperRepository.Get().FirstOrDefaultAsync(f => f.ID == ExperID); if (exper.CompanyID == CompanyID) { exper.Password = model.NewPassWord.GetHash(); Response.Value = await _ExperRepository.UPDATEBool(exper); if (!Response.Value) Response.Errors.Add("خطا در ذخیره سازی"); else Response.Success = true; } else { Response.Errors.Add("کاربری یافت نشد"); } return Response; } public async Task> ForgetPasswordExper(string UserName) { ResponseBase Response = new(); var company = await _ExperRepository.Get().FirstOrDefaultAsync(f => f.UserName == UserName); if (company == null) { Response.Errors.Add("کاربری یافت نشد"); } else { Response.Value = await _VerificationService.GenerateCodeByForgetPassword(UserName); Response.Success = true; } return Response; } } }