public async Task <ActionResult <OrderTableDTO> > CreateOrder([FromBody] OrderTableDTO orderDTO) { var orderEntity = orderDTO.toOrder(); _context.ordertable.Add(orderEntity); await _context.SaveChangesAsync(); return(CreatedAtAction(nameof(GetOrder), new { id = orderEntity.id }, orderEntity)); }
public async Task <IActionResult> UpdateOrder(OrderTableDTO tb2) { var table1 = await _context.ordertable.FindAsync(tb2.id); if (table1 == null) { return(NotFound()); } table1.Mapto2(tb2); _context.ordertable.Update(table1); await _context.SaveChangesAsync(); return(NoContent()); }
public async Task <ActionResult <OrderTableDTO> > GetOrder(int id) { var ord = await _context.ordertable.FindAsync(id); if (ord == null) { return(NotFound()); } var neword = new OrderTableDTO { id = ord.id, createDate = ord.createDate, updateDate = ord.updateDate, paymentMethod = ord.paymentMethod, shippingFee = ord.shippingFee, shippingAddress = ord.shippingAddress, totalPrice = ord.totalPrice, status = ord.status, customerId = ord.customerId, orderItems = _context.orderitem.Where(x => x.orderTableId == ord.id).Select(p => p.toorder_itemDTO()) }; return(Ok(new Response <OrderTableDTO>(neword))); }
public List <TableListIndexDTO> GetList(TableSearchDTO req) { using (var db = new SqlSugarClient(Connection)) { List <TableListIndexDTO> list = new List <TableListIndexDTO>(); var data = db.Queryable <R_Table>(); data = data.Where(p => p.IsDelete == false); if (req.RestaurantId > 0) { data = data.Where(p => p.R_Restaurant_Id == req.RestaurantId); } if (req.AreaId > 0) { data = data.Where(p => p.R_Area_Id == req.AreaId); } if ((int)req.CythStatus > 0) { data = data.Where("CythStatus =" + (int)req.CythStatus); } data = data.OrderBy(p => p.Sorted); if (data.Any()) { list = data.Select <TableListIndexDTO>(s1 => new TableListIndexDTO() { Id = s1.Id, Name = s1.Name, CythStatus = s1.CythStatus, Description = s1.Describe, SeatNum = s1.SeatNum, ServerRate = s1.ServerRate, Restaurant = s1.R_Restaurant_Id, AreaId = s1.R_Area_Id, IsVirtual = s1.IsVirtual, Sorted = s1.Sorted }).ToList(); if (list.Any()) { var tabIds = list.Select(p => p.Id).ToArray(); string tabIdsStr = string.Join(",", tabIds); var orderTabList = db.Queryable <R_OrderTable>() .JoinTable <R_Order>((s1, s2) => s1.R_Order_Id == s2.Id, JoinType.Left) .Where <R_Order>((s1, s2) => tabIds.Contains(s1.R_Table_Id) && s2.IsDelete == false && (s2.CyddStatus == CyddStatus.开台 || s2.CyddStatus == CyddStatus.点餐 || s2.CyddStatus == CyddStatus.送厨 || s2.CyddStatus == CyddStatus.用餐中 || s2.CyddStatus == CyddStatus.反结)) .Select <R_Order, TableLinkOrderDTO>((s1, s2) => new TableLinkOrderDTO() { Id = s1.Id, CreateDate = s1.CreateDate, IsCheckOut = s1.IsCheckOut, IsOpen = s1.IsOpen, OrderCallType = s2.CyddCallType, OrderNo = s2.OrderNo, OrderPersonNum = s2.PersonNum, OrderStatus = s2.CyddStatus, OrderCreatedTime = s2.CreateDate, PersonNum = s1.PersonNum, R_Order_Id = s1.R_Order_Id, R_Table_Id = s1.R_Table_Id, IsControl = s1.IsControl, IsLock = s1.IsLock, MemberCardId = s2.MemberCardId, ContactPerson = s2.ContactPerson, ContactTel = s2.ContactTel } ).ToList(); #region 预定列表 var orderTabReverList = db.SqlQuery <BookingTableDTO>($@" SELECT OT.Id AS OrderTableId, OT.R_Table_Id AS TableId, O.Id AS OrderId, O.ReserveDate AS BookingDate, O.PersonNum, O.ContactPerson, O.ContactTel, M.Id AS MarketId, M.Name AS MarketName FROM dbo.R_OrderTable OT INNER JOIN dbo.R_Order O ON O.Id = OT.R_Order_Id INNER JOIN dbo.R_Market M ON M.Id = O.R_Market_Id WHERE OT.R_Table_Id IN ({tabIdsStr}) AND O.IsDelete=0 AND O.CyddStatus = {(int)CyddStatus.预定} AND DATEDIFF(DAY, GETDATE(), O.ReserveDate)=0 "); #endregion var orderIds = (from od in orderTabList group od by od.R_Order_Id into g select g.Key).ToArray(); var mxList = db.Queryable <R_OrderDetail>() .JoinTable <R_OrderTable>((s1, s2) => s1.R_OrderTable_Id == s2.Id) .Where <R_OrderTable>((s1, s2) => orderIds.Contains(s2.R_Order_Id)) .Select <R_OrderTable, OrderTableProjectDTO>((s1, s2) => new OrderTableProjectDTO() { MxId = s1.Id, OrderTableId = s2.Id, TableId = s2.R_Table_Id, Price = s1.Price, Num = s1.Num, OrderId = s2.R_Order_Id }).ToList(); if (orderTabList.Any() || orderTabReverList.Any()) { var mxIds = mxList.Select(p => p.MxId).ToArray(); #region 订单明细操作表 //var mxRecordList = db.Queryable<R_OrderDetailRecord>().Where( // p => mxIds.Contains(p.R_OrderDetail_Id) && // (p.CyddMxCzType == CyddMxCzType.赠菜 || p.CyddMxCzType == CyddMxCzType.转出 || p.CyddMxCzType == CyddMxCzType.退菜)).ToList(); #endregion var extendList = db.Queryable <R_OrderDetailExtend>() .Where(p => mxIds.Contains(p.R_OrderDetail_Id)) .ToList(); foreach (var item in list) { item.OrderList = orderTabReverList.Where(p => p.TableId == item.Id).ToList(); //获取当前餐台已开台未结账的关联订单信息 var orderTableNows = orderTabList .Where(p => p.R_Table_Id == item.Id && !p.IsCheckOut && p.IsOpen); item.OrderNow = new List <OrderTableDTO>(); if (orderTableNows.Any()) { foreach (var otn in orderTableNows) { var otnModel = new OrderTableDTO() { Id = otn.Id, OrderId = otn.R_Order_Id, IsCheckOut = otn.IsCheckOut, IsOpen = otn.IsOpen, PersonNum = otn.PersonNum, CreateDate = otn.CreateDate, //订单台号表 记录的时间 OrderNo = otn.OrderNo, OrderStatusDesc = otn.OrderStatusDesc, IsControl = otn.IsControl, IsLock = otn.IsLock, IsWeiXin = otn.MemberCardId > 0 ? true : false, TableId = otn.R_Table_Id, ContactTel = otn.ContactTel, ContactPerson = otn.ContactPerson }; var totalAmount = mxList.Where( p => p.OrderTableId == otn.Id && p.OrderId == otn.R_Order_Id) .Sum(p => p.Price * p.Num); var totalAmountExtend = (from ext in extendList join mx in mxList on ext.R_OrderDetail_Id equals mx.MxId where mx.OrderTableId == otn.Id && mx.OrderId == otn.R_Order_Id && mx.MxId == ext.R_OrderDetail_Id select new OrderTableDTO { TotalAmount = ext.Price * mx.Num }).ToList().Sum(p => p.TotalAmount); otnModel.TotalAmount = totalAmount + totalAmountExtend; item.OrderNow.Add(otnModel); } } } } } } return(list); } }
public List <TableListDTO> GetTableListForApi(TableSearchDTO conditionDto) { List <TableListDTO> list = new List <TableListDTO>(); int[] resIds = new int[] { conditionDto.RestaurantId }; var tableList = _tableRep.GetTables(resIds, conditionDto.AreaId); List <TableLinkOrderDTO> orderTableList = new List <TableLinkOrderDTO>(); if (conditionDto.CythStatus == CythStatus.在用) { var statusArray = new int[] { (int)CyddStatus.开台, (int)CyddStatus.点餐, (int)CyddStatus.用餐中, (int)CyddStatus.送厨, (int)CyddStatus.订单菜品修改 }; orderTableList = _orderRep.GetOrderTableListBy( tableList.Select(x => x.Id).ToArray(), statusArray); } foreach (var item in tableList) { TableListDTO obj = new TableListDTO { AreaId = item.R_Area_Id, Description = item.Describe, Id = item.Id, Name = item.Name, SeatNum = item.SeatNum, ServerRate = item.ServerRate, RestaurantId = conditionDto.RestaurantId, CythStatus = (int)item.CythStatus }; if (conditionDto.CythStatus == CythStatus.在用) { List <OrderTableDTO> orderDtoList = new List <OrderTableDTO>(); var filerByTableList = orderTableList.Where(x => x.R_Table_Id == item.Id).ToList(); //if (conditionDto.OrderTableId > 0)//菜品转台时,去除原来的订单台号 //{ // filerByTableList = filerByTableList.Where(x => x.Id != conditionDto.OrderTableId).ToList(); // if (filerByTableList.Count == 0) // continue; //} foreach (var orderTab in filerByTableList) { OrderTableDTO dto = new OrderTableDTO(); dto.Id = orderTab.Id; dto.IsCheckOut = orderTab.IsCheckOut; dto.IsOpen = orderTab.IsOpen; dto.CreateDate = orderTab.CreateDate; dto.TableId = orderTab.R_Table_Id; dto.OrderId = orderTab.R_Order_Id; dto.OrderNo = orderTab.OrderNo; dto.IsLock = orderTab.IsLock; dto.ContactPerson = orderTab.ContactPerson; dto.ContactTel = orderTab.ContactTel; dto.IsControl = orderTab.IsControl; dto.PersonNum = orderTab.PersonNum; orderDtoList.Add(dto); } obj.CurrentOrderList = orderDtoList; } list.Add(obj); } return(list); }
public List <TableListDTO> GetTableList(TableSearchDTO conditionDto) { List <TableListDTO> list = new List <TableListDTO>(); var resList = _resRep.GetList(conditionDto.CompanyId);//获取此公司(租户)下关联的餐厅信息 var ids = resList.Select(x => x.Id).ToArray(); if (conditionDto.RestaurantId > 0)//只取当前餐厅 { ids = ids.Where(x => x == conditionDto.RestaurantId).ToArray(); } var tableList = _tableRep.GetTables(ids, conditionDto.AreaId, conditionDto.CythStatus, conditionDto.InCludVirtual); List <TableLinkOrderDTO> orderTableList = new List <TableLinkOrderDTO>(); if (conditionDto.CythStatus == CythStatus.在用) { var statusArray = new int[] { (int)CyddStatus.开台, (int)CyddStatus.点餐, (int)CyddStatus.用餐中, (int)CyddStatus.送厨, (int)CyddStatus.订单菜品修改, (int)CyddStatus.反结 }; orderTableList = _orderRep.GetOrderTableListBy( tableList.Select(x => x.Id).ToArray(), statusArray); } foreach (var item in tableList) { TableListDTO obj = new TableListDTO { AreaId = item.R_Area_Id, Description = item.Describe, Id = item.Id, Name = item.Name, SeatNum = item.SeatNum, ServerRate = item.ServerRate, Restaurant = resList .Where(x => x.Id == item.R_Restaurant_Id) .Select(x => x.Name).FirstOrDefault(), IsVirtual = item.IsVirtual }; if (conditionDto.CythStatus == CythStatus.在用) { List <OrderTableDTO> orderDtoList = new List <OrderTableDTO>(); var filerByTableList = orderTableList.Where(x => x.R_Table_Id == item.Id).ToList(); if (conditionDto.OrderTableId > 0)//菜品转台时,去除原来的订单台号 { filerByTableList = filerByTableList.Where(x => x.Id != conditionDto.OrderTableId).ToList(); if (filerByTableList.Count == 0) { continue; } } foreach (var orderTab in filerByTableList) { OrderTableDTO dto = new OrderTableDTO(); dto.Id = orderTab.Id; dto.IsCheckOut = orderTab.IsCheckOut; dto.IsOpen = orderTab.IsOpen; dto.CreateDate = orderTab.CreateDate; dto.TableId = orderTab.R_Table_Id; dto.OrderId = orderTab.R_Order_Id; dto.OrderNo = orderTab.OrderNo; dto.IsLock = orderTab.IsLock; dto.IsControl = orderTab.IsControl; dto.PersonNum = orderTab.PersonNum; orderDtoList.Add(dto); } obj.CurrentOrderList = orderDtoList; } list.Add(obj); } return(list); }