forked from AcaMate/AcaMate_API
152 lines
4.2 KiB
C#
152 lines
4.2 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using System.Text.Json;
|
|
using AcaMate.Common.Data;
|
|
using AcaMate.Common.Models;
|
|
using AcaMate.V1.Models;
|
|
|
|
|
|
namespace AcaMate.V1.Controllers;
|
|
|
|
|
|
[ApiController]
|
|
[Route("/api/v1/in/user")]
|
|
[ApiExplorerSettings(GroupName = "사용자")]
|
|
public class UserController: ControllerBase
|
|
{
|
|
private readonly AppDbContext _dbContext;
|
|
public UserController(AppDbContext dbContext)
|
|
{
|
|
_dbContext = dbContext;
|
|
}
|
|
|
|
[HttpGet()]
|
|
[CustomOperation("회원 정보 조회", "회원 정보 조회", "사용자")]
|
|
public IActionResult GetUserData(string uid)
|
|
{
|
|
if (string.IsNullOrEmpty(uid))
|
|
{
|
|
return BadRequest(DefaultResponse.InvalidInputError);
|
|
}
|
|
|
|
try
|
|
{
|
|
var user = _dbContext.User
|
|
.Where(u => u.uid == uid)
|
|
.Select(u => new User
|
|
{
|
|
uid = u.uid,
|
|
name = u.name,
|
|
auto_login_yn = u.auto_login_yn,
|
|
birth = u.birth,
|
|
device_id = u.device_id,
|
|
login_date = u.login_date,
|
|
type = u.type,
|
|
})
|
|
.FirstOrDefault();
|
|
|
|
var response = new APIResponseStatus<User>
|
|
{
|
|
status = new Status()
|
|
{
|
|
code = "000",
|
|
message = "정상"
|
|
},
|
|
data = user
|
|
};
|
|
return Ok(response.JsonToString());
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
return StatusCode(500, DefaultResponse.UnknownError);
|
|
}
|
|
}
|
|
|
|
[HttpGet("login")]
|
|
[CustomOperation("SNS 로그인", "로그인 후 회원이 있는지 확인", "사용자")]
|
|
public IActionResult SNSLogin(string acctype, string sns_id)
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(acctype) && string.IsNullOrEmpty(sns_id))
|
|
{
|
|
return BadRequest(DefaultResponse.InvalidInputError);
|
|
}
|
|
|
|
try
|
|
{
|
|
var login = _dbContext.Login.FirstOrDefault(l => l.sns_type == acctype && l.sns_id == sns_id);
|
|
|
|
string uid = "";
|
|
List<string> bids = new List<string>();
|
|
|
|
if (login != null)
|
|
{
|
|
uid = login.uid;
|
|
var userAcademy = _dbContext.UserAcademy.Where(u => u.uid == uid).ToList();
|
|
|
|
foreach(User_Academy userData in userAcademy)
|
|
{
|
|
Console.WriteLine($"uid: {userData.uid} || bid: {userData.bid}");
|
|
bids.Add(userData.bid);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return StatusCode(002, DefaultResponse.NotFoundError);
|
|
}
|
|
|
|
var response = new APIResponseStatus<dynamic>
|
|
{
|
|
status = new Status()
|
|
{
|
|
code = "000",
|
|
message = "정상"
|
|
},
|
|
data = new
|
|
{
|
|
uid = $"{uid}",
|
|
bid = bids
|
|
}
|
|
};
|
|
|
|
return Ok(response.JsonToString());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, DefaultResponse.UnknownError);
|
|
}
|
|
}
|
|
|
|
[HttpPost("academy")]
|
|
[CustomOperation("학원 리스트 확인","등록된 학원 리스트 확인", "사용자")]
|
|
public IActionResult ReadAcademyInfo([FromBody] RequestAcademy request)
|
|
{
|
|
if (!request.bids.Any())
|
|
{
|
|
var error = DefaultResponse.InvalidInputError;
|
|
return Ok(error);
|
|
}
|
|
|
|
var academies = _dbContext
|
|
.Academy
|
|
.Where(a => request.bids.Contains(a.bid))
|
|
.Select(a => new AcademyName
|
|
{
|
|
bid = a.bid,
|
|
name = a.business_name
|
|
})
|
|
.ToList();
|
|
|
|
var response = new APIResponseStatus<List<AcademyName>>
|
|
{
|
|
status = new Status()
|
|
{
|
|
code = "000",
|
|
message = "정상"
|
|
},
|
|
data = academies
|
|
};
|
|
return Ok(response);
|
|
}
|
|
|
|
|
|
} |