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("Ошибка при удалении оборудования, возможно на оборудование (или дочернее оборудование) ссылаются заявки");
			}
		}
示例#2
0
		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("Ошибка при изменении пользователя");
			}
		}
示例#3
0
		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("Ошибка при изменении/создании оборудования");
			}
		}
示例#5
0
		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, "ошибка при добавлении комментария");
			}
		}
示例#6
0
		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, "Ошибка при создании/изменении заявки на работу крана");
			}
		}
示例#7
0
        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("Ошибка при удалении пользователя. Возможно на пользователя ссылаются заявки");
            }
        }
示例#8
0
		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)));
			}
		}
示例#9
0
		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)));
			}
		}
示例#10
0
		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)));
			}
		}
示例#11
0
		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)));
			}
		}
示例#12
0
		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)));
			}
		}
示例#13
0
		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)));
			}
		}
示例#14
0
		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("Ошибка при создании/изменении заявки");
			}
		}
示例#15
0
		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)));
			}
		}