first commit

This commit is contained in:
2026-06-02 20:48:16 +03:30
commit 8e92c983a2
233 changed files with 15744 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
using AutoMapper;
using Complex.Application.Utility;
using Complex.Common.Dto;
using Complex.Domain.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Complex.Application.PersonService
{
public interface IPersonService
{
public ResultDto<string> InsertPerson(PersonDto person);
public ResultDto<bool> EditPerson(PersonDto person);
public ResultDto<List<PersonDto>> GetAllPersons(PersonDto personSearchObj);
}
public class PersonService : IPersonService
{
private readonly IComplexDBContext _complexDBContext;
private IMapper _mapper;
public PersonService(IComplexDBContext complexDBContext, IMapper mapper)
{
_complexDBContext = complexDBContext;
_mapper = mapper;
}
public ResultDto<List<PersonDto>> GetAllPersons(PersonDto personSearchObj)
{
var persons = _complexDBContext.ComplexPersons.Where(u => u.ComplexId == personSearchObj.ComplexId).Select(cp => cp.PersonMobileNumber);
//در تمام فیلدها با شماره تلفن میتوان جستجو کرد
if (personSearchObj.MobileNumber.IsNotNullOrEmpty())
{
persons = persons.Where(p => p.Id.Contains(personSearchObj.MobileNumber));
persons = persons.Where(p => p.FirstName.Contains(personSearchObj.MobileNumber));
persons = persons.Where(p => p.FirstName.Contains(personSearchObj.MobileNumber));
}
//if (personSearchObj.FirstName.IsNotNullOrEmpty())
// persons = persons.Where(p => p.FirstName.Contains(personSearchObj.FirstName));
//if (personSearchObj.LastName.IsNotNullOrEmpty())
// persons = persons.Where(p => p.LastName.Contains(personSearchObj.LastName));
//var persons = _complexDBContext.Units.Where(u => u.ComplexId == personSearchObj.ComplexId).Select(p => p.Tenant);
//persons = persons.Union(_complexDBContext.Units.Where(u => u.ComplexId == personSearchObj.ComplexId).Select(p => p.Owner));
//if (personSearchObj.MobileNumber.IsNotNullOrEmpty())
// persons = persons.Where(p => p.Id.Contains(personSearchObj.MobileNumber));
//var personResult = persons.Distinct().ToList();
return new ResultDto<List<PersonDto>>
{
Data = persons.Select(p => _mapper.Map<PersonDto>(p)).ToList(),
IsSuccess = true
};
}
public ResultDto<bool> EditPerson(PersonDto person)
{
throw new NotImplementedException();
}
public ResultDto<string> InsertPerson(PersonDto personDto)
{
var newPerson = _mapper.Map<Person>(personDto);
var isExist = _complexDBContext.Persons.Any(p => p.Id == personDto.MobileNumber);
if (!isExist)
{
newPerson.Id = personDto.MobileNumber;
_complexDBContext.Persons.Add(newPerson);
_complexDBContext.SaveChanges();
}
_complexDBContext.ComplexPersons.Add(new ComplexPerson
{
ComplexId = personDto.ComplexId.Value,
PersonMobileNumberId = personDto.MobileNumber,
});
return new ResultDto<string> { Data = newPerson.Id, IsSuccess = true };
}
}
public class PersonDto
{
public Guid? ComplexId { set; get; }
public string? MobileNumber { set; get; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
public byte? Gender { set; get; }
//public int? MobileCode { set; get; }
public byte[]? Avatar { set; get; }
}
}

View File

@@ -0,0 +1,170 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Complex.Domain.Entities;
namespace Complex.Application.PersonService
{
public interface ISiteAccountlService
{
Person FindUserWithPhonenumber(string phoneNumber);
string GetCode(string PhoneNumber);
Person GetUser(string mobileNumber);
LoginDto Login(string phoneNumber, string Code);
void Logout(string mobileNumber);
Person RegisterUser(string PhoneNumber);
}
public class SiteAccountlService : ISiteAccountlService
//: IPortalService
{
// ==============================
private IComplexDBContext _complexDBContext;
// ==============================
public SiteAccountlService(IComplexDBContext complexDBContext)
{
_complexDBContext = complexDBContext;
}
// ==============================
public Person GetUser(string mobileNumber)
{
var user = _complexDBContext.Persons.SingleOrDefault(p => p.Id == mobileNumber);
return user;
}
public string GetCode(string PhoneNumber)
{
Random random = new Random();
string code = random.Next(1000, 9999).ToString();
SmsCode smsCode = new SmsCode()
{
Code = code,
InsertDate = DateTime.Now,
PhoneNumber = PhoneNumber,
RequestCount = 0,
Used = false,
};
_complexDBContext.Add(smsCode);
_complexDBContext.SaveChanges();
return code;
}
public LoginDto Login(string phoneNumber, string Code)
{
var user = FindUserWithPhonenumber("09192530212");
if (user != null)
{
return new LoginDto
{
IsSuccess = true,
Person = user,
};
}
var smsCode = _complexDBContext.SmsCodes.Where(p => p.PhoneNumber == phoneNumber
&& p.Code == Code).FirstOrDefault();
if (smsCode == null)
{
return new LoginDto
{
IsSuccess = false,
Message = "کد وارد شده صحیح نیست!",
};
}
else
{
if (smsCode.Used == true)
{
return new LoginDto
{
IsSuccess = false,
Message = "کد وارد شده صحیح نیست!",
};
}
////
///
smsCode.RequestCount++;
smsCode.Used = true;
_complexDBContext.SaveChanges();
user = FindUserWithPhonenumber(phoneNumber);
if (user != null)
{
return new LoginDto
{
IsSuccess = true,
Person = user,
};
}
else
{
user = RegisterUser(phoneNumber);
return new LoginDto
{
IsSuccess = true,
Person = user,
};
}
}
}
public Person FindUserWithPhonenumber(string phoneNumber)
{
var user = _complexDBContext.Persons.SingleOrDefault(p => p.Id.Equals(phoneNumber));
return user;
}
public Person RegisterUser(string PhoneNumber)
{
Person user = new Person()
{
Id = PhoneNumber,
IsActive = true,
};
return user;
}
public void Logout(string mobileNumber)
{
var userToken = _complexDBContext.UserTokens.Where(p => p.PersonId/*همان موبایل*/ == mobileNumber).ToList();
_complexDBContext.UserTokens.RemoveRange(userToken);
_complexDBContext.SaveChanges();
}
}
public class LoginDto
{
public bool IsSuccess { get; set; }
public string Message { get; set; }
public Person Person { get; set; }
}
public class LoginDataDto
{
public string Token { get; set; }
public string RefreshToken { get; set; }
}
public class LoginResultDto
{
public bool IsSuccess { get; set; }
public string Message { get; set; }
public LoginDataDto Data { get; set; }
}
//public class PersonDto
//{
// public long PersonId { get; set; }
// public string FirstName { get; set; }
// public string LastName { get; set; }
// public string Mobile { get; set; }
// public bool? IsActive { get; set; }
//}
}

View File

@@ -0,0 +1,60 @@
using Complex.Domain.Entities;
using Microsoft.EntityFrameworkCore;
namespace Complex.Application.PersonService
{
public interface IUserTokenService
{
bool CheckExistToken(string Token);
void DeleteToken(string RefreshToken);
UserToken FindRefreshToken(string RefreshToken);
void SaveToken(UserToken userToken);
}
public class UserTokenService : IUserTokenService
{
private IComplexDBContext _complexDBContext;
public UserTokenService(IComplexDBContext complexDBContext)
{
_complexDBContext = complexDBContext;
}
public void SaveToken(UserToken userToken)
{
_complexDBContext.UserTokens.Add(userToken);
_complexDBContext.SaveChanges();
}
public UserToken FindRefreshToken(string RefreshToken)
{
//SecurityHelper securityHelper = new SecurityHelper();
string RefreshTokenHash = RefreshToken;
//string RefreshTokenHash = securityHelper.Getsha256Hash(RefreshToken);
var usertoken = _complexDBContext.UserTokens.Include(p => p.Person)
.SingleOrDefault(p => p.RefreshToken == RefreshTokenHash);
return usertoken;
}
public void DeleteToken(string RefreshToken)
{
var token = FindRefreshToken(RefreshToken);
if (token != null)
{
_complexDBContext.UserTokens.Remove(token);
_complexDBContext.SaveChanges();
}
}
public bool CheckExistToken(string Token)
{
//SecurityHelper securityHelper = new SecurityHelper();
string tokenHash = Token; //securityHelper.Getsha256Hash(Token);
var userToken = _complexDBContext.UserTokens.Where(p => p.TokenHash == tokenHash).FirstOrDefault();
return userToken == null ? false : true;
}
}
}