using Microsoft.AspNetCore.Mvc; using System.Text.Json; using AcaMate.Common.Data; using AcaMate.Common.Models; using AcaMate.V1.Models; using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.IdentityModel.Tokens; 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 { 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 Login(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 bids = new List(); if (login != null) { uid = login.uid; var user = _dbContext.User.FirstOrDefault(user => user.uid == uid); if (user != null) { user.login_date = DateTime.Now; _dbContext.SaveChanges(); } 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); } var response = new APIResponseStatus { status = new Status() { code = "000", message = "정상" }, data = new { uid = $"{uid}", bid = bids } }; return Ok(response.JsonToString()); } else { // 계정이 없다는 거 var response = new APIResponseStatus { status = new Status() { code = "010", message = "정상" }, data = new { uid = "", bid = new string[]{} } }; 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> { status = new Status() { code = "000", message = "정상" }, data = academies }; return Ok(response); } [HttpPost("register")] [CustomOperation("회원 가입", "사용자 회원 가입", "사용자")] public IActionResult UserRegister([FromBody] User request) { if (request.uid.IsNullOrEmpty()) { var error = DefaultResponse.InvalidInputError; return Ok(error); } else { return Ok("회원가입"); } } }