first commit
This commit is contained in:
92
Complex.Application/Services/PersonService/PersonService.cs
Normal file
92
Complex.Application/Services/PersonService/PersonService.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
//}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user