AcaMate_API/Program/V1/Controllers/UserController.cs

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);
}
}