first commit
This commit is contained in:
@@ -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; }
|
||||
//}
|
||||
}
|
||||
Reference in New Issue
Block a user