public void RegisterDeleteOrderObject(OrderObject newObj) { Logger.info("Пользователь удалил оборудование", Logger.LoggerSource.objectsContext); try { if (!CurrentUser.AllowEditTree) { throw new DomainException("У вас нет прав редактировать оборудование"); } VotGESOrdersEntities context=new VotGESOrdersEntities(); VotGESOrders.Web.ADONETEntities.Orders orderDB=new Orders(); OrderObjects objDB=(from o in context.OrderObjects where o.objectID == newObj.ObjectID select o).First(); deleteOrderObject(context, objDB); //context.OrderObjects.DeleteObject(objDB); context.SaveChanges(); OrderObject.init(); Logger.info("===Сохранено", Logger.LoggerSource.objectsContext); } catch (Exception e) { Logger.error(String.Format("===Ошибка при удалении оборудования: {0}", e), Logger.LoggerSource.objectsContext); if (e is DomainException) { throw e; } throw new DomainException("Ошибка при удалении оборудования, возможно на оборудование (или дочернее оборудование) ссылаются заявки"); } }
public void RegisterChangeUser(OrdersUser newUser) { Logger.info("Пользователь изменил пользователя", Logger.LoggerSource.usersContext); try { if (!CurrentUser.AllowEditUsers) { throw new DomainException("У вас нет прав редактировать пользователей"); } VotGESOrdersEntities context=new VotGESOrdersEntities(); IQueryable<Users> users=(from u in context.Users where u.userID == newUser.UserID select u); Users user=null; if (users.Count()==0) { Logger.info("===Новый пользователь", Logger.LoggerSource.usersContext); user = new Users(); user.name = newUser.Name; context.Users.AddObject(user); } else { user = users.First(); } user.fullName = newUser.FullName; user.mail = newUser.Mail; user.sendAgreeMail = newUser.SendAgreeMail; user.sendAllMail = newUser.SendAllMail; user.sendCreateMail = newUser.SendCreateMail; user.sendAllAgreeMail = newUser.SendAllAgreeMail; user.sendAllCreateMail = newUser.SendAllCreateMail; user.allowChangeOrder = newUser.AllowChangeOrder; user.allowCreateOrder = newUser.AllowCreateOrder; user.allowCreateCrashOrder = newUser.AllowCreateCrashOrder; user.allowEditUsers = newUser.AllowEditUsers; user.allowEditOrders = newUser.AllowEditOrders; user.allowEditTree = newUser.AllowEditTree; user.allowAgreeOrders = newUser.AllowAgreeOrders; user.allowReviewOrder = newUser.AllowReviewOrder; user.canReviewCranTask = newUser.CanReviewCranTask; user.canReviewCranMZTask = newUser.CanReviewCranMZTask; user.canCreateCranTask = newUser.CanCreateCranTask; user.canAgreeCranTask = newUser.CanAgreeCranTask; user.sendAgreeCranTask = newUser.SendAgreeCranTask; user.sendAllCreateCranTask = newUser.SendAllCreateCranTask; user.sendAllAgreeCranTask = newUser.SendAllAgreeCranTask; user.sendAllCranTask = newUser.SendAllCranTask; user.sendOnlyMZCranTask = newUser.SendOnlyMZCranTask; context.SaveChanges(); newUser.UserID = user.userID; OrdersUser.init(); Logger.info("===Сохранено", Logger.LoggerSource.usersContext); } catch (Exception e) { Logger.error(String.Format("===Ошибка при изменении пользователя: {0}", e), Logger.LoggerSource.usersContext); if (e is DomainException) { throw e; } throw new DomainException("Ошибка при изменении пользователя"); } }
public ActionResult ProcessAllExpiredOrders() { VotGESOrdersEntities context=new VotGESOrdersEntities(); IQueryable<Orders> expiredOrders=from Orders o in context.Orders select o; foreach (Orders order in expiredOrders) { Order.writeExpired(order); } context.SaveChanges(); return View(); }
public void RegisterChangeOrderObject(OrderObject newObj) { Logger.info("Пользователь изменил оборудование", Logger.LoggerSource.objectsContext); try { if (!CurrentUser.AllowEditTree) { throw new DomainException("У вас нет прав редактировать оборудование"); } VotGESOrdersEntities context=new VotGESOrdersEntities(); IQueryable<OrderObjects> objectsDB=(from o in context.OrderObjects where o.objectID == newObj.ObjectID select o); OrderObjects objDB=null; if (objectsDB.Count()==0) { Logger.info("===Новое оборудование", Logger.LoggerSource.objectsContext); objDB = new OrderObjects(); context.OrderObjects.AddObject(objDB); } else { objDB = objectsDB.First(); } objDB.objectName = newObj.ObjectName; objDB.parentID = newObj.ParentObjectID; objDB.showInFullName = newObj.ShowInFullName; context.SaveChanges(); newObj.ObjectID = objDB.objectID; newObj.ObjectName = objDB.objectName; OrderObject.init(); newObj.FullName = OrderObject.getByID(newObj.ObjectID).getFullName(); Logger.info("===Сохранено", Logger.LoggerSource.objectsContext); } catch (Exception e) { Logger.error(String.Format("===Ошибка при изменении оборудования: {0}", e), Logger.LoggerSource.objectsContext); if (e is DomainException) { throw e; } throw new DomainException("Ошибка при изменении/создании оборудования"); } }
public static ReturnMessage AddComment(CranTaskInfo task, string comment) { Logger.info("Добавление комментария к заявке на работу крана", Logger.LoggerSource.server); try { string result = ""; OrdersUser currentUser = OrdersUser.loadFromCache(HttpContext.Current.User.Identity.Name); VotGESOrdersEntities eni = new VotGESOrdersEntities(); CranTask tbl = new CranTask(); CranTask tsk = (from t in eni.CranTask where t.Number == task.Number select t).FirstOrDefault(); if (tsk == null) { return new ReturnMessage(false, "Заявка не найдена"); } tbl = tsk; if (!string.IsNullOrEmpty(task.AgreeComments)) task.AgreeComments += "\r\n"; task.AgreeComments += String.Format("{2} {0}:\r\n {1}", currentUser.FullName, comment, DateTime.Now.ToString("dd.MM.yyyy HH:mm")); tbl.AgreeComment = task.AgreeComments; eni.SaveChanges(); string message = String.Format("Заявка на работу крана \"{0}\" №{1}. Комментарий", task.CranName, task.CranNumber); MailContext.sendCranTask(message, new CranTaskInfo(tbl)); if (Managers != null) { if (!Managers.Contains(task.Manager)) { Managers.Add(task.Manager); } } else ReadManagers(); return new ReturnMessage(true, "Комментарий добавлен"); } catch (Exception e) { Logger.info("Ошибка при создании/изменении заявки на работу крана " + e.ToString(), Logger.LoggerSource.server); return new ReturnMessage(false, "ошибка при добавлении комментария"); } }
public static ReturnMessage CreateCranTask(CranTaskInfo task) { Logger.info("Создание/изменение заявки на работу крана", Logger.LoggerSource.server); try { string result = ""; string message = String.Format("Заявка на работу крана \"{0}\" №", task.CranName); OrdersUser currentUser = OrdersUser.loadFromCache(HttpContext.Current.User.Identity.Name); VotGESOrdersEntities eni = new VotGESOrdersEntities(); CranTask tbl = new CranTask(); if (task.init) { Logger.info("Определение номера заявки на кран", Logger.LoggerSource.server); tbl.State = "new"; CranTask tsk = (from t in eni.CranTask orderby t.Number descending select t).FirstOrDefault(); task.DateCreate = DateTime.Now; if (tsk != null) { task.Number = tsk.Number + 1; } else { task.Number = 1; } tbl.Allowed = false; tbl.Denied = false; tbl.Author = currentUser.Name; tbl.DateCreate = task.DateCreate; task.Author = currentUser.FullName; eni.CranTask.AddObject(tbl); result = "Заявка на кран успешно создана"; } else { CranTask tsk = (from t in eni.CranTask where t.Number == task.Number select t).FirstOrDefault(); if (tsk == null) { return new ReturnMessage(false, "Заявка не найдена"); } tbl = tsk; result = "Заявка на кран успешно изменена"; } message += task.Number + ". "; if ((task.NeedEndDate <= task.NeedStartDate) || (task.Allowed && (task.AllowDateEnd <= task.AllowDateStart))) { return new ReturnMessage(false, "Дата окончания заявки больше чем дата начала"); } tbl.Number = task.Number; tbl.CranName = task.CranName; tbl.AgreeComment = task.AgreeComments; tbl.NeedDateStart = task.NeedStartDate; tbl.NeedDateEnd = task.NeedEndDate; tbl.Comment = task.Comment; tbl.Manager = task.Manager; tbl.CranNumber = task.CranNumber; if (task.AgreeDict != null) tbl.AgreeUsersIDS = string.Join(";", task.AgreeDict.Keys); if (task.Finished) { tbl.State = "finished"; result = "Заявка на кран завершена"; tbl.RealDateStart = task.RealDateStart; tbl.RealDateEnd = task.RealDateEnd; tbl.AuthorFinish = currentUser.Name; tbl.Finished = true; message += " Заявка завершена"; } else if (task.Allowed) { tbl.AllowedDateStart = task.AllowDateStart; tbl.AllowedDateEnd = task.AllowDateEnd; tbl.RealDateStart = task.AllowDateStart; tbl.RealDateEnd = task.AllowDateEnd; tbl.Denied = false; tbl.Allowed = true; tbl.Cancelled = false; tbl.State = "allowed"; task.AuthorAllow = currentUser.FullName; result = "Заявка на кран разрешена"; message += " Заявка разрешена"; } else if (task.Denied) { tbl.AllowedDateStart = null; tbl.AllowedDateEnd = null; tbl.RealDateEnd = null; tbl.RealDateStart = null; tbl.Allowed = false; tbl.Denied = true; tbl.Cancelled = false; tbl.State = "denied"; task.AuthorAllow = currentUser.FullName; result = "Заявка на кран отклонена"; message += " Заявка отклонена"; } else if (task.Cancelled) { tbl.State = "cancelled"; tbl.Denied = false; tbl.Allowed = false; tbl.Cancelled = true; tbl.AuthorAllow = null; tbl.AllowedDateStart = null; tbl.AllowedDateEnd = null; tbl.RealDateEnd = null; tbl.RealDateStart = null; result = "Заявка на кран снята"; message += " Заявка снята"; } else if (!task.init) { message += " Заявка изменена"; } if (task.Allowed || task.Denied) { tbl.AuthorAllow = currentUser.Name; } eni.SaveChanges(); MailContext.sendCranTask(message, new CranTaskInfo(tbl)); if (Managers != null) { if (!Managers.Contains(task.Manager)) { Managers.Add(task.Manager); } } else ReadManagers(); return new ReturnMessage(true, result); } catch (Exception e) { Logger.info("Ошибка при создании/изменении заявки на работу крана " + e.ToString(), Logger.LoggerSource.server); return new ReturnMessage(false, "Ошибка при создании/изменении заявки на работу крана"); } }
public void RegisterDeleteUser(OrdersUser newUser) { Logger.info("Пользователь удалил пользователя", Logger.LoggerSource.usersContext); try { if (!CurrentUser.AllowEditUsers) { throw new DomainException("У вас нет прав редактировать пользователей"); } VotGESOrdersEntities context=new VotGESOrdersEntities(); IQueryable<Users> users=(from u in context.Users where u.name.ToLower() == newUser.Name.ToLower() select u); Users user=null; user = users.First(); context.DeleteObject(user); context.SaveChanges(); OrdersUser.init(); Logger.info("===Сохранено", Logger.LoggerSource.usersContext); } catch (Exception e) { Logger.error(String.Format("===Ошибка при удалении пользователя: {0}", e), Logger.LoggerSource.usersContext); if (e is DomainException) { throw e; } throw new DomainException("Ошибка при удалении пользователя. Возможно на пользователя ссылаются заявки"); } }
public void RegisterEditOrder(Order order, Guid guid) { Logger.info("Пользователь отредактировал заявку. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { OrderTypeEnum type=order.OrderType; VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); Order prevOrder=new Order(orderDB, currentUser, false, null); order.checkPremissions(orderDB, currentUser); if (order.AllowEditOrder) { orderDB.orderLastUpdate = DateTime.Now; writeOrderToOrderDB(order, orderDB); order.OrderType = type; if (prevOrder.OrderType != order.OrderType && !order.OrderIsFixErrorEnter && !order.OrderIsExtend && !order.OrderExtended && !order.OrderAskExtended) { if ((order.OrderType == OrderTypeEnum.crash || order.OrderType == OrderTypeEnum.no) && (prevOrder.OrderType == OrderTypeEnum.no || prevOrder.OrderType == OrderTypeEnum.crash) ) { orderDB.orderType = order.OrderType.ToString(); } else if ((order.OrderType == OrderTypeEnum.npl || order.OrderType == OrderTypeEnum.pl) && (prevOrder.OrderType == OrderTypeEnum.pl || prevOrder.OrderType == OrderTypeEnum.npl)) { orderDB.orderType = order.OrderType.ToString(); } else { orderDB.orderType = prevOrder.OrderType.ToString(); } } if (orderDB.orderReviewed && order.OrderDateReview!=null) { orderDB.reviewText = order.ReviewText; orderDB.orderDateReview = order.OrderDateReview; } Logger.info(order.FaktStartDate.ToString(),Logger.LoggerSource.ordersContext); if (orderDB.orderOpened && order.FaktStartDate!=null) { orderDB.faktStartDate = order.FaktStartDate; orderDB.openText = order.OpenText; } if (orderDB.orderClosed && order.FaktStopDate!=null) { orderDB.faktStopDate = order.FaktStopDate; orderDB.closeText = order.CloseText; } if (orderDB.orderCompleted && order.FaktCompleteDate!=null) { orderDB.faktCompleteDate = order.FaktCompleteDate; orderDB.completeText = order.CompleteText; } if (orderDB.orderCanceled) { orderDB.cancelText = order.CancelText; } orderDB.commentsText = order.CommentsText; checkOrder(orderDB); Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Заявка отредактирована. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); } else { throw new DomainException("Нельзя отменить ввод оборудования"); } order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Заявка отредактирована ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, true, false,prevOrder); } catch (Exception e) { Logger.error(String.Format("===Ошибка при редактировании заявки №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при редактировании заявки №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }
public void CancelOrder(Order order, Guid guid) { Logger.info("Пользователь снял заявку №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); order.checkPremissions(orderDB, currentUser); if (order.AllowCancelOrder) { orderDB.orderLastUpdate = DateTime.Now; orderDB.orderDateCancel = DateTime.Now; orderDB.userCancelOrderID = currentUser.UserID; orderDB.cancelText = order.CancelText; orderDB.orderCanceled = true; orderDB.orderState = OrderStateEnum.canceled.ToString(); if (order.OrderIsExtend) { Logger.info("===Продленная заявка", Logger.LoggerSource.ordersContext); Orders parentOrderDB=context.Orders.Include("Users").Where(o => o.orderNumber == order.ParentOrderNumber).First(); parentOrderDB.orderLastUpdate = DateTime.Now; parentOrderDB.orderExtended = false; parentOrderDB.orderAskExtended = false; parentOrderDB.orderState = OrderStateEnum.opened.ToString(); parentOrderDB.childOrderNumber = null; parentOrderDB.orderCompleted = false; parentOrderDB.orderDateComplete = null; parentOrderDB.completeText = null; parentOrderDB.faktCompleteDate = null; parentOrderDB.userCompleteOrderID = null; Order.writeExpired(parentOrderDB); Order parentOrderNew=new Order(parentOrderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Снята заявка на продление ({2}) [{1}]", parentOrderNew.OrderNumber.ToString(OrderInfo.NFI), parentOrderNew.FullOrderObjectInfo, CurrentUser.FullName), parentOrderNew, false, false); } if (order.OrderIsFixErrorEnter) { Logger.info("===Аварийная заявка", Logger.LoggerSource.ordersContext); Orders parentOrderDB=context.Orders.Include("Users").Where(o => o.orderNumber == order.ParentOrderNumber).First(); parentOrderDB.orderLastUpdate = DateTime.Now; parentOrderDB.orderCompletedWithoutEnter = false; parentOrderDB.orderState = OrderStateEnum.closed.ToString(); parentOrderDB.childOrderNumber = null; parentOrderDB.orderCompleted = false; parentOrderDB.orderDateComplete = null; parentOrderDB.completeText = null; parentOrderDB.faktCompleteDate = null; parentOrderDB.userCompleteOrderID = null; Order.writeExpired(parentOrderDB); Order parentOrderNew=new Order(parentOrderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Снята аварийная заявка ({2}) [{1}]", parentOrderNew.OrderNumber.ToString(OrderInfo.NFI), parentOrderNew.FullOrderObjectInfo, CurrentUser.FullName), parentOrderNew, false, false); } Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Заявка. Снята заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); } else { throw new DomainException("Нельзя снять заявку"); } order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Заявка снята ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, false, false); } catch (Exception e) { Logger.error(String.Format("===Ошибка при снятии заявки №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при снятии заявки №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }
public void RejectCompleteOrder(Order order, Guid guid) { Logger.info("Пользователь отменил ввод оборудования. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); order.checkPremissions(orderDB, currentUser); if (order.AllowRejectCompleteOrder) { orderDB.orderLastUpdate = DateTime.Now; orderDB.orderDateComplete = null; orderDB.orderCompleted = false; orderDB.orderState = OrderStateEnum.closed.ToString(); orderDB.completeText = null; orderDB.userCompleteOrderID = null; orderDB.faktCompleteDate = null; Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Отмена ввода оборудования. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); } else { throw new DomainException("Нельзя отменить ввод оборудования"); } order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Отмена ввода оборудования ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI),order.FullOrderObjectInfo, CurrentUser.FullName), order, false, false); } catch (Exception e) { Logger.error(String.Format("===Ошибка при отмене ввода оборудования по заявке №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при отмене ввода оборудования по заявке №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }
public void OpenOrder(Order order, Guid guid) { Logger.info("Пользователь открыл заявку №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); order.checkPremissions(orderDB, currentUser); if (order.AllowOpenOrder) { orderDB.orderLastUpdate = DateTime.Now; orderDB.orderDateOpen = DateTime.Now; orderDB.faktStartDate = order.FaktStartDate; orderDB.userOpenOrderID = currentUser.UserID; orderDB.openText = order.OpenText; orderDB.orderOpened = true; orderDB.orderState = OrderStateEnum.opened.ToString(); Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Заявка открыта. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); } else { throw new DomainException("Нельзя открыть заявку"); } order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Заявка открыта ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, false, false); } catch (Exception e) { Logger.error(String.Format("===Ошибка при открытии заявки №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при открытии заявки №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }
public void RejectReviewOrder(Order order, Guid guid) { Logger.info("Пользователь отменил рассмотрение заявки №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); order.checkPremissions(orderDB, currentUser); if (order.AllowRejectReviewOrder) { orderDB.orderLastUpdate = DateTime.Now; orderDB.orderDateReview = null; orderDB.orderDateOpen = null; orderDB.faktStartDate = null; orderDB.userOpenOrderID = null; orderDB.orderOpened = false; orderDB.userReviewOrderID = null; orderDB.reviewText = null; orderDB.orderReviewed = false; orderDB.orderState = OrderStateEnum.created.ToString(); if (order.OrderIsExtend) { Logger.info("===Продленная заявка", Logger.LoggerSource.ordersContext); Orders parentOrderDB=context.Orders.Include("Users").Where(o => o.orderNumber == order.ParentOrderNumber).First(); parentOrderDB.orderLastUpdate = DateTime.Now; parentOrderDB.orderExtended = false; parentOrderDB.orderAskExtended = true; parentOrderDB.orderState = OrderStateEnum.askExtended.ToString(); Order.writeExpired(parentOrderDB); Order parentOrderNew=new Order(parentOrderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Отмена рассмотрения заявки на продление ({2}) [{1}]", parentOrderNew.OrderNumber.ToString(OrderInfo.NFI), parentOrderNew.FullOrderObjectInfo, CurrentUser.FullName), parentOrderNew, false, false); } Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Заявка. Отмена рассмотрения. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); } else { throw new DomainException("Нельзя отменить рассмотрение заявки"); } order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Отмена рассмотрения заявки ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, true, false); } catch (Exception e) { Logger.error(String.Format("===Ошибка при отмене рассмотрения заявки №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при отмене рассмотрения заявки №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }
public void AcceptOrder(Order order, Guid guid) { Logger.info("Пользователь разрешил заявку №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); order.checkPremissions(orderDB, currentUser); if (order.AllowReviewOrder) { orderDB.orderLastUpdate = DateTime.Now; orderDB.orderDateReview = DateTime.Now; orderDB.userReviewOrderID = currentUser.UserID; orderDB.reviewText = order.ReviewText; orderDB.orderReviewed = true; orderDB.orderState = OrderStateEnum.accepted.ToString(); if (order.OrderIsExtend) { Logger.info("===Продленная заявка", Logger.LoggerSource.ordersContext); Orders parentOrderDB=context.Orders.Where(o => o.orderNumber == order.ParentOrderNumber).First(); orderDB.orderOpened = true; orderDB.openText = "Оборудование выведено. Заявка продлена"; orderDB.userOpenOrderID = AutoUser.UserID; orderDB.orderState = OrderStateEnum.opened.ToString(); orderDB.orderDateOpen = DateTime.Now; orderDB.faktStartDate = parentOrderDB.planStopDate; parentOrderDB.orderLastUpdate = DateTime.Now; parentOrderDB.orderExtended = true; parentOrderDB.orderAskExtended = false; parentOrderDB.orderState = OrderStateEnum.extended.ToString(); Order.writeExpired(parentOrderDB); Order parentOrderNew=new Order(parentOrderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Заявка продлена ({2}) [{1}]", parentOrderNew.OrderNumber.ToString(OrderInfo.NFI), parentOrderNew.FullOrderObjectInfo, CurrentUser.FullName), parentOrderNew, false, false); } Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Заявка разрешена. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); } else { throw new DomainException("Нельзя разрешить заявку"); } order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Заявка разрешена ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, false, false); } catch (Exception e) { Logger.error(String.Format("===Ошибка при разрешении заявки №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при разрешении заявки №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }
public void RegisterOrder(Order order, Guid guid) { Logger.info("Пользователь создал/изменил заявку", Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Order prevOrder=null; VotGESOrders.Web.ADONETEntities.Orders orderDB=null; bool isNew=false; try { orderDB = context.Orders.First(o => o.orderNumber == order.OrderNumber); if (orderDB == null) isNew = true; }catch{ isNew=true; } if (!isNew) { Order tempOrder=new Order(orderDB, currentUser, false, null); tempOrder.checkPremissions(orderDB, currentUser); if (!tempOrder.AllowChangeOrder) { throw new DomainException("Нельзя изменить заявку"); } prevOrder=new Order(orderDB, currentUser, false, null); } else { orderDB=new Orders(); orderDB.userCreateOrderID = currentUser.UserID; double maxNumber=1; double newNumber=1; try { if (order.OrderIsExtend || order.OrderIsFixErrorEnter) { maxNumber = context.Orders.Where(o => Math.Floor(o.orderNumber) == Math.Floor(order.ParentOrderNumber)).Max(o => o.orderNumber); newNumber = maxNumber + 0.01; } else { maxNumber = context.Orders.Max(o => o.orderNumber); maxNumber = Math.Floor(maxNumber); newNumber = maxNumber + 1; } } catch { } orderDB.orderNumber = newNumber; orderDB.orderDateCreate = DateTime.Now; } orderDB.orderLastUpdate = DateTime.Now; orderDB.orderCreated = true; orderDB.orderState = OrderStateEnum.created.ToString(); orderDB.orderReviewed = false; orderDB.orderOpened = false; orderDB.reviewText = null; orderDB.openText = null; orderDB.orderDateReview = null; orderDB.orderDateOpen = null; orderDB.faktStartDate = null; orderDB.userOpenOrderID = null; orderDB.userReviewOrderID = null; writeOrderToOrderDB(order, orderDB); if ((order.OrderType == OrderTypeEnum.crash || order.OrderType==OrderTypeEnum.no) && !order.OrderIsExtend) { Logger.info("===Аварийная/неотложная заявка", Logger.LoggerSource.ordersContext); orderDB.orderReviewed = true; orderDB.orderOpened = true; orderDB.orderDateReview = DateTime.Now; orderDB.orderDateOpen = DateTime.Now; orderDB.userReviewOrderID = AutoUser.UserID; orderDB.userOpenOrderID = AutoUser.UserID; orderDB.reviewText = order.OrderType == OrderTypeEnum.crash?"Аварийная заявка":"Неотложная заявка"; orderDB.openText = order.OrderType == OrderTypeEnum.crash ? "Аварийная заявка" : "Неотложная заявка"; orderDB.faktStartDate = order.PlanStartDate; orderDB.orderState = OrderStateEnum.opened.ToString(); } if (order.OrderIsExtend) { Logger.info("===Продленная заявка", Logger.LoggerSource.ordersContext); Orders parentOrderDB=context.Orders.Where(o => o.orderNumber == order.ParentOrderNumber).First(); Order parentOrder=new Order(parentOrderDB, currentUser, false, null); parentOrder.checkPremissions(parentOrderDB, currentUser); if (!parentOrder.AllowExtendOrder && isNew) { throw new DomainException("Заявка уже продлена"); } if (isNew) { parentOrderDB.orderDateComplete = DateTime.Now; parentOrderDB.userCompleteOrderID = currentUser.UserID; } orderDB.userCreateOrderID = parentOrderDB.userCreateOrderID; parentOrderDB.orderLastUpdate = DateTime.Now; parentOrderDB.orderAskExtended = true; parentOrderDB.orderState = OrderStateEnum.askExtended.ToString(); parentOrderDB.orderCompleted = true; parentOrderDB.completeText = "Продление заявки"; parentOrderDB.faktCompleteDate = order.PlanStartDate; orderDB.orderIsExtend = true; orderDB.parentOrderNumber = order.ParentOrderNumber; parentOrderDB.childOrderNumber = orderDB.orderNumber; Order.writeExpired(parentOrderDB); Order parentOrderNew=new Order(parentOrderDB, currentUser, false, null); if (isNew) { MailContext.sendMail(String.Format("Заявка №{0}. Продление заявки ({2}) [{1}]", parentOrderNew.OrderNumber.ToString(OrderInfo.NFI), parentOrderNew.FullOrderObjectInfo, CurrentUser.FullName), parentOrderNew, true, false); } } if (order.OrderIsFixErrorEnter) { Logger.info("===Заявка закрыта без ввода оборудования", Logger.LoggerSource.ordersContext); Orders parentOrderDB=context.Orders.Where(o => o.orderNumber == order.ParentOrderNumber).First(); Order parentOrder=new Order(parentOrderDB, currentUser, false, null); parentOrder.checkPremissions(parentOrderDB, currentUser); if (!parentOrder.AllowCompleteWithoutEnterOrder&&isNew) { throw new DomainException("Заявка уже закрыта"); } orderDB.userCreateOrderID = parentOrderDB.userCreateOrderID; if (isNew) { parentOrderDB.orderDateComplete = DateTime.Now; parentOrderDB.userCompleteOrderID = currentUser.UserID; } parentOrderDB.orderLastUpdate = DateTime.Now; parentOrderDB.orderCompletedWithoutEnter = true; parentOrderDB.orderCompleted = true; parentOrderDB.completeText = "Закрытие без ввода оборудования"; parentOrderDB.orderState = OrderStateEnum.completedWithoutEnter.ToString(); parentOrderDB.faktCompleteDate = order.PlanStartDate; orderDB.orderIsFixErrorEnter = true; orderDB.parentOrderNumber = order.ParentOrderNumber; parentOrderDB.childOrderNumber = orderDB.orderNumber; Order.writeExpired(parentOrderDB); if (isNew) { Order parentOrderNew=new Order(parentOrderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Заявка закрыта без ввода оборудования ({2}) [{1}]", parentOrderNew.OrderNumber.ToString(OrderInfo.NFI), parentOrderNew.FullOrderObjectInfo, CurrentUser.FullName), parentOrderNew, true, false); } } if (isNew) { context.Orders.AddObject(orderDB); } Order.writeExpired(orderDB); context.SaveChanges(); Logger.info("===Сохранено", Logger.LoggerSource.ordersContext); LastUpdate.save(guid); order.refreshOrderFromDB(orderDB, currentUser,false,null); MailContext.sendMail(String.Format(isNew ? "Заявка №{0}. Создана новая заявка ({2}) [{1}]" : "Заявка №{0}. Заявка изменена ({2}) [{1}]", order.OrderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, true, false,prevOrder); } catch (Exception e) { Logger.error(String.Format("===Ошибка при создании/изменении заявки: {0}", e), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException("Ошибка при создании/изменении заявки"); } }
public void RegisterAddComment(Order order, String commentText, Guid guid) { Logger.info("Пользователь добавил комментарий к заявке. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); try { VotGESOrdersEntities context=new VotGESOrdersEntities(); Orders orderDB=context.Orders.First(o => o.orderNumber == order.OrderNumber); order.checkPremissions(orderDB, currentUser); addComment(orderDB, commentText); Order.writeExpired(orderDB); context.SaveChanges(); LastUpdate.save(guid); Logger.info("===Добавлен комментарий. Заявка №" + order.OrderNumber.ToString(OrderInfo.NFI), Logger.LoggerSource.ordersContext); order.refreshOrderFromDB(orderDB, currentUser, false, null); MailContext.sendMail(String.Format("Заявка №{0}. Новый комментарий ({2}) [{1}]", orderDB.orderNumber.ToString(OrderInfo.NFI), order.FullOrderObjectInfo, CurrentUser.FullName), order, true, false); } catch (Exception e) { Logger.error(String.Format("===Ошибка при комментировании заявки №{1}: {0}", e, order.OrderNumber.ToString(OrderInfo.NFI)), Logger.LoggerSource.ordersContext); if (e is DomainException) { throw e; } throw new DomainException(String.Format("Ошибка при комментировании заявки №{0}", order.OrderNumber.ToString(OrderInfo.NFI))); } }