public JsonResult CheckSystemName(ComponentTypeEditModel model) { var repository = CurrentAccountDbContext.GetComponentTypeRepository(); var componentType = repository.GetOneOrNullBySystemName(model.SystemName); if (componentType != null && (model.Id == Guid.Empty || model.Id != componentType.Id)) { return(Json("Тип компонента с таким системным именем уже существует", JsonRequestBehavior.AllowGet)); } return(Json(true, JsonRequestBehavior.AllowGet)); }
public ActionResult Edit(ComponentTypeEditModel model) { if (!ModelState.IsValid) { return(View(model)); } var repository = CurrentAccountDbContext.GetComponentTypeRepository(); var componentType = repository.GetById(model.Id); CheckEditingPermissions(componentType); repository.Update(componentType, model.DisplayName, model.SystemName); this.SetTempMessage(TempMessageType.Success, "Тип компонента сохранён"); return(RedirectToAction("Show", new { id = model.Id })); }
public ActionResult Show(Guid id) { var repository = CurrentAccountDbContext.GetComponentTypeRepository(); var componentType = repository.GetById(id); var model = new ComponentTypeEditModel() { Id = componentType.Id, DisplayName = componentType.DisplayName, SystemName = componentType.SystemName, IsCommon = componentType.IsSystem, IsDeleted = componentType.IsDeleted }; return(View(model)); }
public ActionResult Delete(Guid id) { var repository = CurrentAccountDbContext.GetComponentTypeRepository(); var componentType = repository.GetById(id); CheckDeletingPermissions(componentType); var model = new DeleteConfirmationModel() { Id = id.ToString(), Title = "Удаление типа компонента", ModalMode = Request.IsAjaxRequest(), Message = "Вы действительно хотите удалить этот тип компонента?", ReturnUrl = Url.Action("Index") }; return(View("~/Views/Shared/Dialogs/DeleteConfirmation.cshtml", model)); }
public ActionResult Delete(DeleteConfirmationModel model) { if (!ModelState.IsValid) { return(View("~/Views/Shared/Dialogs/DeleteConfirmation.cshtml", model)); } var repository = CurrentAccountDbContext.GetComponentTypeRepository(); var componentType = repository.GetById(Guid.Parse(model.Id)); CheckDeletingPermissions(componentType); var client = GetDispatcherClient(); client.DeleteComponentType(CurrentUser.AccountId, componentType.Id); this.SetTempMessage(TempMessageType.Success, "Тип компонента удалён"); return(Redirect(model.ReturnUrl)); }
public ActionResult Index(string search = null) { var repository = CurrentAccountDbContext.GetComponentTypeRepository(); var query = repository.QueryAll(); if (!string.IsNullOrEmpty(search)) { query = query.Where(t => t.SystemName.Contains(search) || t.DisplayName.Contains(search) || t.Id.ToString().Equals(search)); } var model = new ComponentTypesListModel { Search = search, ComponentTypes = query.OrderBy(t => t.DisplayName) }; return(View(model)); }
/// <summary> /// Статистика запусков /// </summary> public ActionResult Starts(Guid?componentTypeId = null, Guid?componentId = null, string fromDate = null, string toDate = null) { var sDate = !string.IsNullOrEmpty(fromDate) ? DecodeDateTimeParameter(fromDate) : (DateTime?)null; var eDate = !string.IsNullOrEmpty(toDate) ? DecodeDateTimeParameter(toDate) : (DateTime?)null; Component component = null; var componentRepository = CurrentAccountDbContext.GetComponentRepository(); if (componentId.HasValue) { component = componentRepository.GetById(componentId.Value); } ComponentType componentType = null; var componentTypeRepository = CurrentAccountDbContext.GetComponentTypeRepository(); if (componentTypeId.HasValue) { componentType = componentTypeRepository.GetById(componentTypeId.Value); } else { componentType = componentTypeRepository.QueryAll().Where(t => t.IsDeleted == false).OrderBy(t => t.DisplayName).FirstOrDefault(); } EventType startEventType = null; Component[] components; var items = new List <StartsReportItemModel>(); var graph = new List <StartsReportGrapthItemModel>(); string error = null; if (componentType != null) { if (component != null) { components = new[] { component } } ; else { components = componentRepository.QueryAll() .Where(t => t.ComponentTypeId == componentType.Id && t.IsDeleted == false) .ToArray(); } var componentsIds = components.Select(t => t.Id).ToArray(); var eventTypeRepository = CurrentAccountDbContext.GetEventTypeRepository(); startEventType = eventTypeRepository.GetOneOrNullBySystemName(SystemEventType.ComponentStart); if (startEventType != null) { var startEventTypeId = startEventType.Id; var listLockObject = new Object(); var eventRepository = CurrentAccountDbContext.GetEventRepository(); // Все события запуска за указанный интервал var allEventsQuery = eventRepository.QueryAllByComponentId(componentsIds) .Where(t => t.EventTypeId == startEventTypeId); if (sDate.HasValue) { allEventsQuery = allEventsQuery.Where(t => t.StartDate >= sDate.Value); } if (eDate.HasValue) { allEventsQuery = allEventsQuery.Where(t => t.StartDate <= eDate.Value); } // События запуска по компонентам var startEventsQuery = allEventsQuery.Select( t => new { Id = t.Id, StartDate = t.StartDate, ComponentId = t.OwnerId, Count = t.Count }); var startEvents = startEventsQuery.GroupBy(t => t.ComponentId).ToArray(); var list = startEvents.Join(components, a => a.Key, b => b.Id, (a, b) => new { Component = b, Events = a }) .Select(t => new StartsReportItemModel() { ComponentId = t.Component.Id, ComponentDisplayName = t.Component.DisplayName, ComponentSystemName = t.Component.SystemName, CreateDate = t.Component.CreatedDate, Version = t.Component.Version, FirstStart = t.Events.OrderBy(x => x.StartDate).Select(x => x.StartDate).FirstOrDefault(), FirstStartId = t.Events.OrderBy(x => x.StartDate).Select(x => x.Id).FirstOrDefault(), LastStart = t.Events.OrderByDescending(x => x.StartDate) .Select(x => x.StartDate) .FirstOrDefault(), LastStartId = t.Events.OrderByDescending(x => x.StartDate).Select(x => x.Id).FirstOrDefault(), Count = t.Events.Sum(x => x.Count) }).ToList(); // События запуска по датам var statsEventsQuery = allEventsQuery.Select(t => new { StartDate = t.StartDate, Count = t.Count }); var stats = statsEventsQuery.GroupBy(t => DbFunctions.TruncateTime(t.StartDate)) .Select(t => new StartsReportGrapthItemModel() { Date = t.Key.Value, Count = t.Sum(x => x.Count) }).ToList(); lock (listLockObject) { items.AddRange(list); graph.AddRange(stats); } } else { error = "У выбранного типа компонента нет типа события с системным именем '" + SystemEventType.ComponentStart + "'"; } } var model = new StartsReportModel() { AccountId = CurrentUser.AccountId, ComponentId = componentId, ComponentTypeId = componentTypeId, FromDate = sDate, ToDate = eDate, Items = items.OrderBy(t => t.ComponentDisplayName).ToList(), Graph = graph.OrderBy(t => t.Date).ToList(), Error = error, StartEventTypeId = startEventType != null ? startEventType.Id : (Guid?)null, Total = items.Sum(t => t.Count) }; return(View(model)); }