Backend/TCM_API/Controllers/lamiter/Company_detail_tableController.cs
2025-02-22 19:38:02 +08:00

170 lines
5.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using TCM_API.Models;
using TCM_API.Entities;
using TCM_API.Services;
using TCM_API.Authorization;
using TCM_API.ViewModels;
namespace TCM_API.Controllers.lamiter
{
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class Company_detail_tableController : ControllerBase
{
private readonly SqlContext _context;
public Company_detail_tableController(SqlContext context)
{
_context = context;
}
#region
/// <summary>
/// 獲取所有企業
/// </summary>
[HttpGet("get_all_campany")]
public async Task<ActionResult<object>> GetCompany_all_deatil()
{
var data = await(from a in _context.company_detail_table
join b in _context.user_table on a.guid equals b.guid into joined
from b in joined.DefaultIfEmpty()
orderby a.data_create_time
select new
{
company_name = a.company_name,
guid = a.guid,
level = b.level
}).ToListAsync();
return Ok( data);
}
#endregion
#region
[HttpGet("get_campany-{guid}")]
public async Task<ActionResult<object>> GetCompany_deatil(string guid)
{
var data = await (from a in _context.company_detail_table
join b in _context.user_table on a.guid equals b.guid into joined
from b in joined.DefaultIfEmpty()
where b.guid == guid
select new
{
guid = a.guid,
level = b.level,
company_name = a.company_name,
user_name = b.username,
email = b.email
}).FirstOrDefaultAsync();
if (data == null)
{
return NotFound();
}
return data;
}
#endregion
#region
/// <summary>
/// 編輯企業啟用
/// </summary>
[HttpPost("company_enable")]
public async Task<IActionResult> UpdateEnable(EnableDto enableDto)
{
var edit_data = await (from a in _context.user_table
where a.guid == enableDto.Guid
select a).FirstOrDefaultAsync();
if (edit_data == null)
{
return NotFound("找不到該使用者");
}
// 更新 level 屬性
edit_data.level = enableDto.level;
// 標記為已修改
_context.user_table.Update(edit_data);
await _context.SaveChangesAsync();
return Ok();
}
#endregion
#region
/// <summary>
/// 新增企業
/// </summary>
[HttpPost("Add_campany")]
public async Task<ActionResult<Company_detail_table>> PostCompany_detail_table_1(Add_company add_company)
{
// 創建Guid
Guid new_guid = Guid.NewGuid();
//創建 公司詳細
Company_detail_table company_detail_table = new Company_detail_table();
company_detail_table.guid = new_guid.ToString();
company_detail_table.data_create_time = DateTime.Now;
company_detail_table.company_name = add_company.username;
//創建 公司帳號
User user = new User();
user.firstname = "company";
user.lastname = add_company.lastname;
user.email = add_company.email;
user.password = add_company.password;
user.username = add_company.username;
user.level = "8";
user.guid = new_guid.ToString();
//儲存
_context.company_detail_table.Add(company_detail_table);
_context.user_table.Add(user);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (Company_detail_tableExists(company_detail_table.guid))
{
return Conflict();
}
else
{
throw;
}
}
return Ok();
}
#endregion
private bool Company_detail_tableExists(string id)
{
return _context.company_detail_table.Any(e => e.guid == id);
}
/// <summary>
/// 企業啟用請求 DTO
/// </summary>
public class CompanyEnableDto
{
public string? Guid { get; set; }
public string? level { get; set; }
}
}
}