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 MySqlX.XDevAPI.Common; using Parking_space_WebAPI.Models; using Parking_space_WebAPI.Services; using Parking_space_WebAPI.Authorization; namespace Parking_space_WebAPI.Controllers { [Route("api/[controller]")] [ApiController] [Authorize] [ApiExplorerSettings(GroupName = "校園外網")] public class Parking_spaces_total_tableController : ControllerBase { private readonly SqlContext _context; public Parking_spaces_total_tableController(SqlContext context) { _context = context; } [AllowAnonymous] #region 獲取停車場所有資料 // GET: api/Parking_spaces_total_table /// /// 獲取停車場所有資料 /// [HttpGet] public async Task>> Getparking_spaces_total_table() { if (_context.parking_spaces_total_table == null) { return NotFound(); } return await _context.parking_spaces_total_table.ToListAsync(); } #endregion [AllowAnonymous] #region 獲取停車場單一資料 // GET: api/Parking_spaces_total_table/5 /// /// 獲取停車場單一資料 /// [HttpGet("{id}")] public async Task> GetParking_spaces_total_table(string id) { if (_context.parking_spaces_total_table == null) { return NotFound(); } var parking_spaces_total_table = await _context.parking_spaces_total_table.FindAsync(id); if (parking_spaces_total_table == null) { return NotFound(); } return parking_spaces_total_table; } #endregion #region 更改停車區資料 // PUT: api/Parking_spaces_total_table/5 /// /// 更改停車區資料 /// [HttpPut("{id}")] public async Task PutParking_spaces_total_table(string id, Parking_spaces_total_table parking_spaces_total_table) { if (id != parking_spaces_total_table.parking_spaces_name) { return BadRequest(); } _context.Entry(parking_spaces_total_table).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!Parking_spaces_total_tableExists(id)) { return NotFound(); } else { throw; } } return NoContent(); } #endregion #region 新增一筆停車區資料 // POST: api/Parking_spaces_total_table /// /// 新增一筆停車區資料 /// [HttpPost] public async Task> PostParking_spaces_total_table(Parking_spaces_total_table parking_spaces_total_table) { if (_context.parking_spaces_total_table == null) { return Problem("Entity set 'SqlContext.parking_spaces_total_table' is null."); } _context.parking_spaces_total_table.Add(parking_spaces_total_table); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (Parking_spaces_total_tableExists(parking_spaces_total_table.parking_spaces_name)) { return Conflict(); } else { throw; } } return CreatedAtAction("GetParking_spaces_total_table", new { id = parking_spaces_total_table.parking_spaces_name }, parking_spaces_total_table); } #endregion #region 刪除停車區資料 // DELETE: api/Parking_spaces_total_table/5 /// /// 刪除停車區資料 /// [HttpDelete("{id}")] public async Task DeleteParking_spaces_total_table(string id) { if (_context.parking_spaces_total_table == null) { return NotFound(); } var parking_spaces_total_table = await _context.parking_spaces_total_table.FindAsync(id); if (parking_spaces_total_table == null) { return NotFound(); } _context.parking_spaces_total_table.Remove(parking_spaces_total_table); await _context.SaveChangesAsync(); return NoContent(); } #endregion #region 針對指定停車場現在車位數量加1 // GET: api/Parking_spaces_total_table/5 /// /// 針對指定停車場現在車位數量加1 /// [HttpGet("Parking_spaces_total_table_add-{id}")] public async Task> Parking_spaces_total_table_add(string id) { if (_context.parking_spaces_total_table == null) { return NotFound(); } //var parking_spaces_total_table = await _context.parking_spaces_total_table.FindAsync(id); var parking_spaces_total_table = await (from c in _context.parking_spaces_total_table where c.parking_spaces_name == id select new Parking_spaces_total_table { parking_spaces_name = c.parking_spaces_name, parking_spaces_total_num = c.parking_spaces_total_num, longitude = c.longitude, latitude = c.latitude, parking_spaces_now_num = c.parking_spaces_now_num, } ).FirstAsync(); _context.parking_spaces_total_table.Remove(parking_spaces_total_table); await _context.SaveChangesAsync(); if (parking_spaces_total_table.parking_spaces_now_num != null) { string parking_spaces_now_num = parking_spaces_total_table.parking_spaces_now_num; //單獨取出資料庫目前停車數量 int parking_spaces_now_num_int; Int32.TryParse(parking_spaces_now_num, out parking_spaces_now_num_int); //轉int格式 parking_spaces_now_num_int = parking_spaces_now_num_int+1; //停車數量加1 parking_spaces_now_num = parking_spaces_now_num_int.ToString();//轉string格式 parking_spaces_total_table.parking_spaces_now_num = parking_spaces_now_num; _context.parking_spaces_total_table.Remove(parking_spaces_total_table); } _context.parking_spaces_total_table.Add(parking_spaces_total_table); await _context.SaveChangesAsync(); var parking_spaces_lcd_instand = await (from c in _context.parking_spaces_lcd_instand where c.parking_spaces_name == parking_spaces_total_table.parking_spaces_name select new Parking_spaces_lcd_instand { lcd_ip = c.lcd_ip, parking_spaces_name = c.parking_spaces_name, parking_space_amount = c.parking_space_amount, } ).FirstAsync(); _context.parking_spaces_lcd_instand.Remove(parking_spaces_lcd_instand); await _context.SaveChangesAsync(); parking_spaces_lcd_instand.parking_space_amount = parking_spaces_total_table.parking_spaces_now_num; _context.parking_spaces_lcd_instand.Add(parking_spaces_lcd_instand); await _context.SaveChangesAsync(); if (parking_spaces_total_table == null) { return NotFound(); } return parking_spaces_total_table; } #endregion #region 針對指定停車場現在車位數量減1 // GET: api/Parking_spaces_total_table/5 /// /// 針對指定停車場現在車位數量減1 /// [HttpGet("Parking_spaces_total_table_subtract-{id}")] public async Task> Parking_spaces_total_table_subtract(string id) { if (_context.parking_spaces_total_table == null) { return NotFound(); } //var parking_spaces_total_table = await _context.parking_spaces_total_table.FindAsync(id); var parking_spaces_total_table = await (from c in _context.parking_spaces_total_table where c.parking_spaces_name == id select new Parking_spaces_total_table { parking_spaces_name = c.parking_spaces_name, parking_spaces_total_num = c.parking_spaces_total_num, longitude = c.longitude, latitude = c.latitude, parking_spaces_now_num = c.parking_spaces_now_num, } ).FirstAsync(); _context.parking_spaces_total_table.Remove(parking_spaces_total_table); await _context.SaveChangesAsync(); if (parking_spaces_total_table.parking_spaces_now_num != null) { string parking_spaces_now_num = parking_spaces_total_table.parking_spaces_now_num; //單獨取出資料庫目前停車數量 int parking_spaces_now_num_int; Int32.TryParse(parking_spaces_now_num, out parking_spaces_now_num_int); //轉int格式 parking_spaces_now_num_int = parking_spaces_now_num_int - 1; //停車數量減1 parking_spaces_now_num = parking_spaces_now_num_int.ToString();//轉string格式 parking_spaces_total_table.parking_spaces_now_num = parking_spaces_now_num; _context.parking_spaces_total_table.Remove(parking_spaces_total_table); } _context.parking_spaces_total_table.Add(parking_spaces_total_table); await _context.SaveChangesAsync(); var parking_spaces_lcd_instand = await (from c in _context.parking_spaces_lcd_instand where c.parking_spaces_name == parking_spaces_total_table.parking_spaces_name select new Parking_spaces_lcd_instand { lcd_ip = c.lcd_ip, parking_spaces_name = c.parking_spaces_name, parking_space_amount = c.parking_space_amount, } ).FirstAsync(); _context.parking_spaces_lcd_instand.Remove(parking_spaces_lcd_instand); await _context.SaveChangesAsync(); parking_spaces_lcd_instand.parking_space_amount = parking_spaces_total_table.parking_spaces_now_num; _context.parking_spaces_lcd_instand.Add(parking_spaces_lcd_instand); await _context.SaveChangesAsync(); if (parking_spaces_total_table == null) { return NotFound(); } return parking_spaces_total_table; } #endregion private bool Parking_spaces_total_tableExists(string id) { return (_context.parking_spaces_total_table?.Any(e => e.parking_spaces_name == id)).GetValueOrDefault(); } } }