170 lines
5.2 KiB
C#
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; }
|
|
}
|
|
}
|
|
}
|