Example #1
0
        public async Task <IActionResult> PreviewEdit(ApproveOrderModel model)
        {
            var order = await _processOrderService.GetOrderById(model.OrdersId);

            if (order == null)
            {
                return(RedirectToAction("ApprovedOrders"));
            }

            if (ModelState.IsValid)
            {
                var result = await _processOrderService.UpdateOrder(order, model);

                if (result != null)
                {
                    SuccessNotification("The order data has been updated successfully.");
                    return(RedirectToAction("PreviewEdit", "ProcessOrders",
                                            new { OrdersID = model.OrdersId }));
                }
                else
                {
                    ModelState.AddModelError("", "Something went wrong while saving record.");
                }
            }

            return(View(model));
        }
        public async Task <Orders> UpdateOrder(Orders orders, ApproveOrderModel model)
        {
            orders.OsellingPrice = model.OsellingPrice;
            orders.Oqty          = model.Oqty;
            orders.Ofor          = model.Ofor;
            orders.OsalesTaxRate = model.OsalesTaxRate;
            orders.Oby           = model.Oby;
            orders.Ogl           = model.Ogl;
            orders.Onote         = model.Onote;
            orders.Odate         = model.Odate;

            orders = await _orderRepository.UpdateAsync(orders);

            return(orders);
        }
        /// <summary>
        /// 统计审批人审批(待审批和已审批)申请单
        /// </summary>
        /// <param name="userId">审批人</param>
        /// <param name="status">申请单状态</param>
        /// <returns>审批人审批申请单</returns>
        public List <ApproveOrderModel> SummaryApproveOrders(int userId, OrderStatus?status = null)
        {
            if (userId < 1)
            {
                throw new InvalidOperationException("无效的审批人Id。");
            }

            if (status == null)
            {
                status = OrderStatus.Invalid;
            }

            using (var dbContext = new MissionskyOAEntities())
            {
                var entities = dbContext.Orders.SqlQuery(string.Format(SUMMARY_APPROVE_ORDERS, userId)).ToList();
                //查询审批人所有审批单(已审批和待审批)
                entities =
                    entities.Where(
                        it => status == OrderStatus.Invalid || (!it.Status.HasValue && status == OrderStatus.Apply) || it.Status == (int)status)
                    .ToList();

                var approveOrders = new List <ApproveOrderModel>();

                var users   = dbContext.Users;     //所有用户
                var details = dbContext.OrderDets; //所有申请详细

                entities.ToList().ForEach(entity =>
                {
                    if (approveOrders.Any(o => o.OrderNo == entity.OrderNo) == false)       //过滤批量申请单
                    {
                        var detail = details.FirstOrDefault(it => it.OrderId == entity.Id); //申请单详细
                        var user   = users.FirstOrDefault(it => it.Id == entity.UserId);    //申请人

                        //构造审批单列表
                        if (detail != null && entity.Status.HasValue && user != null)
                        {
                            var order = new ApproveOrderModel()
                            {
                                OrderNo    = entity.OrderNo,
                                Status     = (OrderStatus)entity.Status.Value,
                                OrderType  = (OrderType)entity.OrderType,
                                OrderUsers = _userService.GetOrderUsers(dbContext, entity.OrderNo), //申请单用户
                                IsRevoked  = entity.RefOrderId.HasValue,
                                //StartDate = Convert.ToDateTime(detail.StartDate.ToShortDateString() +" "+ detail.StartTime.ToString()),
                                //EndDate = Convert.ToDateTime(detail.EndDate.ToShortDateString() +" "+ detail.EndTime.ToString()),
                                AppliedTime = detail.StartDate,
                                IOHours     = detail.IOHours,
                                IsApproved  = true //已审批
                            };

                            if (entity.NextAudit.HasValue && entity.NextAudit.Value == userId) //是否当前用户未审批
                            {
                                order.IsApproved = false;
                            }

                            approveOrders.Add(order);
                        }
                    }
                });

                return(approveOrders.OrderByDescending(it => it.AppliedTime).ToList());
            }
        }