处理挂单测试问题
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Model;
|
||||
using PagedList;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity;
|
||||
@@ -15,12 +16,36 @@ using static regionController;
|
||||
public class guadanOrderController : ApiController
|
||||
{
|
||||
private Model.ezEntities _db = new Model.ezEntities();
|
||||
[HttpGet]
|
||||
[HttpPost]
|
||||
[Route("api/guadan/list")]
|
||||
public async Task<IHttpActionResult> getGuadanList()
|
||||
public async Task<IHttpActionResult> getGuadanList([FromBody] guadan_order_search_dto search)
|
||||
{
|
||||
var data = await _db.GuaDanOrder
|
||||
|
||||
var query = _db.GuaDanOrder
|
||||
.Where(a => a.IsCancel == false)
|
||||
.Where(a => a.IsDeleted == false);
|
||||
if(search.guadanUser != null)
|
||||
{
|
||||
query = query.Where(order => order.BookerName == search.guadanUser);
|
||||
}
|
||||
if (search.startDate != null && search.endDate != null)
|
||||
{
|
||||
query = query.Where(order => order.StartDate >= search.startDate)
|
||||
.Where(order => order.EndDate <= search.endDate);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (search.startDate != null)
|
||||
{
|
||||
query = query.Where(order => order.StartDate == search.startDate);
|
||||
}
|
||||
else if (search.endDate != null)
|
||||
{
|
||||
query = query.Where(order => order.EndDate == search.endDate);
|
||||
}
|
||||
}
|
||||
var total = query.Count();
|
||||
var data = await query
|
||||
.OrderByDescending(b => b.CreatedAt)
|
||||
.Select(a => new
|
||||
{
|
||||
@@ -36,8 +61,15 @@ public class guadanOrderController : ApiController
|
||||
.Where(c => c.GuaDanOrderNo == a.GuaDanOrderNo && c.IsDeleted == false)
|
||||
.Where(c => c.RegionRoomBedStatus.Code != GuaDanOrderGuest.STATUS_CANCELLED)
|
||||
.Count(),
|
||||
}).ToListAsync();
|
||||
return Ok(data);
|
||||
})
|
||||
.Skip((search.page - 1) * search.pageSize)
|
||||
.Take(search.pageSize)
|
||||
.ToListAsync();
|
||||
return Ok(new
|
||||
{
|
||||
total,
|
||||
data
|
||||
});
|
||||
}
|
||||
[HttpGet]
|
||||
[Route("api/guadan/getorderbyid")]
|
||||
@@ -221,4 +253,13 @@ public class guadanOrderController : ApiController
|
||||
public RegionRoomBed bed { get; set; } = null;
|
||||
}
|
||||
|
||||
public class guadan_order_search_dto
|
||||
{
|
||||
public DateTime? startDate { get; set; }
|
||||
public DateTime? endDate { get; set; }
|
||||
public string guadanUser { get; set; }
|
||||
public int page { get; set; } = 1;
|
||||
public int pageSize { get; set; } = 10;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -39,8 +39,9 @@ public class regionController : ApiController
|
||||
var startDate = filter.StartDate.Date;
|
||||
var endDate = filter.EndDate.Date;
|
||||
|
||||
var query = _db.Region
|
||||
var query = _db.Region//区域状态是否启用这里只设置了过滤了有客房的区域,是否要过滤所有
|
||||
.Where(r => !r.IsDeleted)
|
||||
.Where(r => r.IsActive)
|
||||
.Where(r => r.Room.Any());
|
||||
|
||||
if (filter.Gender != null)
|
||||
@@ -373,6 +374,10 @@ public class regionController : ApiController
|
||||
var region = _db.Region.FirstOrDefault(r => r.Uuid == dto.Uuid);
|
||||
if (region == null)
|
||||
return NotFound();
|
||||
if(dto.RoomCount < region.Room.Count())
|
||||
{
|
||||
return BadRequest("客房數量小於已存在的客房數量");
|
||||
}
|
||||
region.Name = dto.Name;
|
||||
region.Description = dto.Description;
|
||||
region.SortOrder = dto.SortOrder;
|
||||
|
||||
@@ -379,6 +379,7 @@ public class regionRoomBedController : ApiController
|
||||
RoomUuid = roomUuid,
|
||||
CheckInAt = allocationStart,
|
||||
CheckOutAt = allocationEnd,
|
||||
StatusCode = "401",
|
||||
};
|
||||
_db.GuaDanOrderGuest.Add(guest);
|
||||
|
||||
@@ -396,7 +397,8 @@ public class regionRoomBedController : ApiController
|
||||
IsDeleted = false,
|
||||
CreatedBy = "系统自动分配",
|
||||
CreatedAt = DateTime.Now,
|
||||
GuaDanOrderNo = guest.GuaDanOrderNo
|
||||
GuaDanOrderNo = guest.GuaDanOrderNo,
|
||||
Title = "掛單"
|
||||
};
|
||||
_db.RegionAndRoomAndBedSchedule.Add(newSchedule);
|
||||
}
|
||||
@@ -413,7 +415,8 @@ public class regionRoomBedController : ApiController
|
||||
IsDeleted = false,
|
||||
CreatedBy = "系统自动分配",
|
||||
CreatedAt = DateTime.Now,
|
||||
GuaDanOrderNo = guest.GuaDanOrderNo
|
||||
GuaDanOrderNo = guest.GuaDanOrderNo,
|
||||
Title = "掛單"
|
||||
};
|
||||
_db.RegionAndRoomAndBedSchedule.Add(newSchedule);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,15 @@ public class regionRoomController : ApiController
|
||||
{
|
||||
return BadRequest("請輸入床位數量");
|
||||
}
|
||||
var region = _db.Region.Find(room.RegionUuid);
|
||||
if(region == null)
|
||||
{
|
||||
return BadRequest("未找到客房所屬的區域");
|
||||
}
|
||||
if(region.Room.Count() >= region.RoomCount)
|
||||
{
|
||||
return BadRequest("當前區域客房數量已經達到上限");
|
||||
}
|
||||
var newRoom = new Room();
|
||||
newRoom.Name = room.Name;
|
||||
newRoom.RegionUuid = room.RegionUuid;
|
||||
@@ -103,15 +112,43 @@ public class regionRoomController : ApiController
|
||||
[Route("api/region/room/delete")]
|
||||
public async Task<IHttpActionResult> deleteRoom([FromBody] Room rm)
|
||||
{
|
||||
var room = await _db.Room.FindAsync(rm.Uuid);
|
||||
if (room == null) return BadRequest("房間不存在");
|
||||
using (var transaction = _db.Database.BeginTransaction())
|
||||
{
|
||||
try
|
||||
{
|
||||
var room = await _db.Room.FindAsync(rm.Uuid);
|
||||
if (room == null) return BadRequest("房間不存在");
|
||||
|
||||
var beds = _db.RegionRoomBed.Where(b => b.RoomUuid == room.Uuid);
|
||||
_db.RegionRoomBed.RemoveRange(beds);
|
||||
var beds = _db.RegionRoomBed.Where(b => b.RoomUuid == room.Uuid);
|
||||
_db.RegionRoomBed.RemoveRange(beds);
|
||||
|
||||
_db.Room.Remove(room);
|
||||
await _db.SaveChangesAsync();
|
||||
return Ok(new { message = "刪除成功" });
|
||||
_db.Room.Remove(room);
|
||||
|
||||
await _db.SaveChangesAsync();
|
||||
transaction.Commit();
|
||||
|
||||
return Ok(new { message = "刪除成功" });
|
||||
}
|
||||
catch (System.Data.Entity.Infrastructure.DbUpdateException ex)
|
||||
{
|
||||
transaction.Rollback();
|
||||
|
||||
// 判断是否为外键约束错误
|
||||
if (ex.InnerException?.InnerException is System.Data.SqlClient.SqlException sqlEx &&
|
||||
sqlEx.Number == 547) // 547 = 外键冲突
|
||||
{
|
||||
return BadRequest("房間或床位正在被使用,不能刪除");
|
||||
}
|
||||
|
||||
return InternalServerError(ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
transaction.Rollback();
|
||||
return InternalServerError(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user