170 lines
4.9 KiB
C#
170 lines
4.9 KiB
C#
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; }
|
|
//}
|
|
} |