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 { 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 bids = new List(); 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 { 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> { status = new Status() { code = "000", message = "정상" }, data = academies }; return Ok(response); } }