public Task <PartialViewResult> LeftMenu() { var userName = string.Empty; if (HttpContext.User.Identity.IsAuthenticated) { userName = HttpContext.User.Identity.Name; } //if return (Task.Factory.StartNew(() => { ProjectRole role = null; var token = GetToken(userName); if (token != null) { role = ProjectRoleSet.GetKindByID(token.User.ProjectRoleID); } return role; }).ContinueWith( t => { return PartialView("LeftMenu", t.Result); } )); }
/// <summary> /// Сохраняет в базе модель редактирования заказа. /// </summary> /// <param name="token">Токен безопасности.</param> /// <param name="model">Модель редактирования.</param> /// <param name="result">Результат корректности модели.</param> /// <returns>Модель пункта грида.</returns> public static RepairOrderGridItemModel SaveEditRepairOrderGridItemModel(SecurityToken token, RepairOrderEditModel model, JGridSaveModelResult result) { var entity = RemontinkaServer.Instance.EntitiesFacade.GetOrder(token, model.Id); RiseExceptionIfNotFound(entity, model.Id, "Заказ"); var oldEntity = new RepairOrder(); entity.CopyTo(oldEntity); if (ProjectRoleSet.UserHasRole(token.User.ProjectRoleID, ProjectRoleSet.Engineer))//Если пользователь инженер, тогда даем ему право изменять только статус заказа { entity.OrderStatusID = model.RepairOrderStatusID; entity.Recommendation = model.Recommendation; } //if else { //TODO Сделать трекинг изменений в OrderTimeline entity.BranchID = model.BranchID; entity.CallEventDate = model.CallEventDate; entity.ClientAddress = model.ClientAddress; entity.ClientEmail = model.ClientEmail; entity.ClientFullName = model.ClientFullName; entity.ClientPhone = model.ClientPhone; entity.DateOfBeReady = model.DateOfBeReady; entity.Defect = model.Defect; entity.DeviceAppearance = model.DeviceAppearance; entity.DeviceModel = model.DeviceModel; entity.DeviceSN = model.DeviceSN; entity.DeviceTitle = model.DeviceTitle; entity.DeviceTrademark = model.DeviceTrademark; entity.EngineerID = model.EngineerID; entity.GuidePrice = model.GuidePrice; entity.IsUrgent = model.IsUrgent; entity.IssueDate = model.IssueDate; if (entity.IssueDate != null && entity.IssuerID == null) { entity.IssuerID = token.User.UserID; } //if //entity.IssuerID = model.is entity.ManagerID = model.ManagerID; entity.Notes = model.Notes; entity.Options = model.Options; entity.OrderKindID = model.OrderKindID; entity.OrderStatusID = model.RepairOrderStatusID; entity.PrePayment = model.PrePayment; entity.Recommendation = model.Recommendation; entity.WarrantyTo = model.WarrantyTo; } //else RemontinkaServer.Instance.EntitiesFacade.SaveRepairOrder(token, entity); entity = RemontinkaServer.Instance.EntitiesFacade.GetOrder(token, entity.RepairOrderID); RiseExceptionIfNotFound(entity, model.Id, "Заказ"); RemontinkaServer.Instance.OrderTimelineManager.TrackOrderChange(token, oldEntity, entity); return(CreateItemModel(entity)); }
/// <summary> /// Создает модель строки грида по конкретной сущности. /// </summary> /// <param name="entity">Сущность.</param> /// <returns>Созданная модель.</returns> private UserGridItemModel CreateItemModel(Romontinka.Server.DataLayer.Entities.User entity) { return(new UserGridItemModel { Contacts = string.Format("{0} {1}", entity.Phone, entity.Email), FullName = string.Format("{0} {1} {2}", entity.LastName, entity.FirstName, entity.MiddleName), Id = entity.UserID, Login = entity.LoginName, ProjectRoleTitle = ProjectRoleSet.GetKindByID(entity.ProjectRoleID).Title, }); }
/// <summary> /// Сохраняет в базе модель создания элемента. /// </summary> /// <param name="token">Токен безопасности.</param> /// <param name="model">Модель редактирования сущности для сохранения.</param> /// <param name="result">Результат с ошибками.</param> public override void SaveEditModel(SecurityToken token, RepairOrderEditModel model, SaveModelResult result) { var entity = ClientCore.Instance.DataStore.GetRepairOrder(model.Id); RiseExceptionIfNotFound(entity, model.Id, "Заказ"); var oldEntity = new RepairOrder(); entity.CopyTo(oldEntity); if (ProjectRoleSet.UserHasRole(token.User.ProjectRoleID, ProjectRoleSet.Engineer)) { entity.OrderStatusIDGuid = model.RepairOrderStatusID; } //if else { //TODO Сделать трекинг изменений в OrderTimeline entity.BranchIDGuid = model.BranchID; entity.CallEventDateDateTime = model.CallEventDate; entity.ClientAddress = model.ClientAddress; entity.ClientEmail = model.ClientEmail; entity.ClientFullName = model.ClientFullName; entity.ClientPhone = model.ClientPhone; entity.DateOfBeReadyDateTime = model.DateOfBeReady; entity.Defect = model.Defect; entity.DeviceAppearance = model.DeviceAppearance; entity.DeviceModel = model.DeviceModel; entity.DeviceSN = model.DeviceSN; entity.DeviceTitle = model.DeviceTitle; entity.DeviceTrademark = model.DeviceTrademark; entity.EngineerIDGuid = model.EngineerID; entity.GuidePrice = (double?)WpfUtils.StringToDecimal(model.GuidePrice); entity.IsUrgentBoolean = model.IsUrgent; entity.IssueDateDateTime = model.IssueDate; if (entity.IssueDate != null && entity.IssuerID == null) { entity.IssuerID = token.User.UserID; } //if entity.ManagerIDGuid = model.ManagerID; entity.Notes = model.Notes; entity.Options = model.Options; entity.OrderKindIDGuid = model.OrderKindID; entity.OrderStatusIDGuid = model.RepairOrderStatusID; entity.PrePayment = (double?)WpfUtils.StringToDecimal(model.PrePayment); entity.Recommendation = model.Recommendation; entity.WarrantyToDateTime = model.WarrantyTo; } //else ClientCore.Instance.DataStore.SaveRepairOrder(entity); ClientCore.Instance.OrderTimelineManager.TrackOrderChange(token, oldEntity, entity); }
public ActionResult LeftMenu() { ProjectRole role = null; if (HttpContext.User.Identity.IsAuthenticated) { var token = GetToken(); if (token != null) { role = ProjectRoleSet.GetKindByID(token.User.ProjectRoleID); } } return(View("LeftMenu", role)); }
private void InternalUserRegistration(string login, string password, string notes) { try { RiseInfoStatusChanged("Регистрация пользователя"); var user = ClientCore.Instance.DataStore.GetUser(login); if (user != null) { if ((!string.IsNullOrWhiteSpace(user.PasswordHash)) && (!StringComparer.Ordinal.Equals(user.PasswordHash, BcryptHash(password)))) { RiseAuthError("Пароль не совпадает с текущим на клиенте"); return; } var userKey = ClientCore.Instance.DataStore.GetCurrentUserKey(user.UserIDGuid); if (userKey != null && userKey.IsActivatedBool) { _logger.InfoFormat("Пользователь с таким логином уже существует, отправка ключей невозможна {0}", login); RiseAuthError("Такой пользователь уже есть"); return; } } _logger.InfoFormat("Старт генерации ключей для пользователя {0}.", login); RiseInfoStatusChanged("Генерация ключей"); var privateFilePath = Path.Combine(LocationUtils.GetFullPath(), PrivateKeyFileName); var publicFilePath = Path.Combine(LocationUtils.GetFullPath(), PublicKeyFileName); ClientCore.Instance.CryptoService.CreateRsaKeyPair(publicFilePath, privateFilePath, password); if (!File.Exists(privateFilePath) || !File.Exists(publicFilePath)) { throw new Exception("Ключи не создались"); } //if var publicKeyData = File.ReadAllText(publicFilePath, _rsaKeyEncoding); var privateKeyData = File.ReadAllText(privateFilePath, _rsaKeyEncoding); RiseInfoStatusChanged("Отправка запроса на сервер"); var domainId = ClientCore.Instance.DataStore.GetFirstUserDomainID(); var request = new RegisterPublicKeyRequest(); request.ClientUserDomainID = domainId; request.EventDate = DateTime.Now; request.KeyNotes = notes; request.PublicKeyData = publicKeyData; request.UserLogin = login; var response = ClientCore.Instance.WebClient.RegisterPublicKey(request); if (user == null) { RiseInfoStatusChanged("Ответ получен, сохраняем локально пользователя"); user = new User(); user.DomainIDGuid = response.UserDomainID; user.LoginName = login; user.FirstName = string.Empty; user.Email = string.Empty; user.LastName = string.Empty; user.Email = string.Empty; user.ProjectRoleID = ProjectRoleSet.GetMinimumRoleID(); user.Phone = string.Empty; user.PasswordHash = BcryptHash(password); ClientCore.Instance.DataStore.SaveUser(user); } else { if (string.IsNullOrWhiteSpace(user.PasswordHash))//при первой регистрации пользователя { user.PasswordHash = BcryptHash(password); ClientCore.Instance.DataStore.SaveUser(user); } } RiseInfoStatusChanged("Сохраняем пользовательский ключ"); var key = new UserKey(); key.EventDateDateTime = request.EventDate; key.UserIDGuid = user.UserIDGuid; key.Number = response.Number; key.PrivateKeyData = privateKeyData; key.PublicKeyData = publicKeyData; key.IsActivatedBool = false; ClientCore.Instance.DataStore.SaveUserKey(key);//TODO удалить пользователя, если ключ не сохранился RiseInfoStatusChanged("Пользователь успешно зарегистрировался"); RiseUserRegistredEventArgs(login); } catch (Exception ex) { _logger.LogError(ex, string.Format("Во время регистрации ключей пользователя {0} произошла ошибка ", login)); RiseAuthError(ex.Message, ex); } //try }
/// <summary> /// Создает модель данных для представления списка заказов. /// </summary> /// <returns>Модель данных.</returns> public static RepairOrderViewModel CreateRepairOrderViewModel(SecurityToken token) { var model = new RepairOrderViewModel(); model.OrderGrid = new DataGridDescriptor(); model.OrderGrid.BeforeGridUpdateJsFunctionName = "BeforeUpdateRepairOrderGrid"; model.OrderGrid.Name = ControllerName; model.OrderGrid.Controller = ControllerName; model.OrderGrid.SearchInputs.Add(new ComboBoxSearchInput { Name = "Фильтр", ComboBoxModel = new AjaxComboBoxModel { Property = "FilterID", Controller = "AjaxRepairOrderFilterComboBox", FirstIsNull = true } }); model.OrderGrid.SearchInputs.Add(new ComboBoxSearchInput { Name = "Пользователь", ComboBoxModel = new AjaxComboBoxModel { Property = "UserID", Controller = "AjaxUserComboBox", FirstIsNull = true } }); model.OrderGrid.SearchInputs.Add(new ComboBoxSearchInput { Name = "Статус", ComboBoxModel = new AjaxComboBoxModel { Property = "OrderStatusID", Controller = "AjaxOrderStatus", FirstIsNull = true } }); model.OrderGrid.SearchInputs.Add(new TextSearchInput { Id = "Name", Value = string.Empty, Name = "Имя" }); model.OrderGrid.SearchInputs.Add(new HiddenSearchInput { Id = "CopyFromRepairOrderID" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Номер", Id = "Number" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Статус", Id = "StatusTitle" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Дата", Id = "EventDate" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Дата готовности", Id = "EventDateOfBeReady" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Менеджер", Id = "ManagerFullName" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Инженер", Id = "EngineerFullName" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Клиент", Id = "ClientFullName" }); model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Устройство", Id = "DeviceTitle" }); if (ProjectRoleSet.UserHasRole(token.User.ProjectRoleID, ProjectRoleSet.Engineer)) { model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Неисправности", Id = "Defect" }); } else { model.OrderGrid.Columns.Add(new TextGridColumn { Name = "Суммы", Id = "Totals" }); } if (token.User.ProjectRoleID == ProjectRoleSet.Admin.ProjectRoleID) { model.OrderGrid.DeleteButtonGridColumn = new DeleteButtonGridColumn { QuestionText = "Вы точно хотите удалить заказ ", DataId = "Number" }; } if (ProjectRoleSet.UserHasRole(token.User.ProjectRoleID, ProjectRoleSet.Admin, ProjectRoleSet.Manager)) { model.OrderGrid.CreateButtonGrid = new CreateButtonGrid { Name = "Создание заказа", FullScreen = true, NoDialogTitle = true }; } //if model.OrderGrid.EditButtonGridColumn = new EditButtonGridColumn { FullScreen = true, NoDialogTitle = true }; model.OrderGrid.ShowDetailsButtonColumn = new ShowDetailsButtonColumn { ToolTip = "Показать работы и запчасти", CallFunctionName = "showDetails" }; model.OrderGrid.AutoLoad = true; model.OrderGrid.HasTableBorderedClass = true; model.OrderGrid.HasTableStripedClass = false; model.WorkItemsGrid = new DataGridDescriptor(); model.WorkItemsGrid.Name = WorkItemController.ControllerName; model.WorkItemsGrid.Controller = WorkItemController.ControllerName; model.WorkItemsGrid.SearchInputs.Add(new HiddenSearchInput { Id = "WorkItemRepairOrderID" }); model.WorkItemsGrid.SearchInputs.Add(new TextSearchInput { Id = "WorkItemName", Value = string.Empty, Name = "Название" }); model.WorkItemsGrid.Columns.Add(new TextGridColumn { Name = "Дата", Id = "WorkItemEventDate" }); model.WorkItemsGrid.Columns.Add(new TextGridColumn { Name = "Описание", Id = "WorkItemTitle" }); model.WorkItemsGrid.Columns.Add(new TextGridColumn { Name = "Инженер", Id = "WorkItemEngineerFullName" }); model.WorkItemsGrid.Columns.Add(new TextGridColumn { Name = "Стоимость", Id = "WorkItemPrice" }); model.WorkItemsGrid.DeleteButtonGridColumn = new DeleteButtonGridColumn { QuestionText = "Вы точно хотите удалить работу ", DataId = "WorkItemTitle" }; model.WorkItemsGrid.EditButtonGridColumn = new EditButtonGridColumn { Height = 400, Width = 500 }; model.WorkItemsGrid.CreateButtonGrid = new CreateButtonGrid { Name = "Создание выполненной работы", Height = 400, Width = 500 }; model.WorkItemsGrid.AutoLoad = false; model.WorkItemsGrid.HasTableBorderedClass = true; model.WorkItemsGrid.HasTableStripedClass = true; model.DeviceItemsGrid = new DataGridDescriptor(); model.DeviceItemsGrid.Name = DeviceItemController.ControllerName; model.DeviceItemsGrid.Controller = DeviceItemController.ControllerName; model.DeviceItemsGrid.SearchInputs.Add(new HiddenSearchInput { Id = "DeviceItemRepairOrderID" }); model.DeviceItemsGrid.SearchInputs.Add(new TextSearchInput { Id = "DeviceItemName", Value = string.Empty, Name = "Название" }); model.DeviceItemsGrid.Columns.Add(new TextGridColumn { Name = "Описание", Id = "DeviceItemTitle" }); model.DeviceItemsGrid.Columns.Add(new TextGridColumn { Name = "Количество", Id = "DeviceItemCount" }); model.DeviceItemsGrid.Columns.Add(new TextGridColumn { Name = "Себестоимость", Id = "DeviceItemCostPrice" }); model.DeviceItemsGrid.Columns.Add(new TextGridColumn { Name = "Стоимость", Id = "DeviceItemPrice" }); model.DeviceItemsGrid.DeleteButtonGridColumn = new DeleteButtonGridColumn { QuestionText = "Вы точно хотите удалить запчасть ", DataId = "DeviceItemTitle" }; model.DeviceItemsGrid.EditButtonGridColumn = new EditButtonGridColumn { Height = 450, Width = 550 }; model.DeviceItemsGrid.CreateButtonGrid = new CreateButtonGrid { Name = "Создание запчасти", Height = 450, Width = 550 }; model.DeviceItemsGrid.AutoLoad = false; model.DeviceItemsGrid.HasTableBorderedClass = true; model.DeviceItemsGrid.HasTableStripedClass = true; model.Documents = RemontinkaServer.Instance.EntitiesFacade.GetCustomReportItems(token, DocumentKindSet.OrderReportDocument.DocumentKindID).Select(i => new RepairOrderDocumentModel { CustomReportID = i.CustomReportID, Title = i.Title }); model.DeviceTrademarkAutocompleteItems = RemontinkaServer.Instance.EntitiesFacade.GetAutocompleteItems(token, AutocompleteKindSet.DeviceTrademark. AutocompleteKindID).Select( i => i.Title); model.DeviceOptionsAutocompleteItems = RemontinkaServer.Instance.EntitiesFacade.GetAutocompleteItems(token, AutocompleteKindSet.DeviceOptions. AutocompleteKindID).Select( i => i.Title); model.DeviceAppearanceAutocompleteItems = RemontinkaServer.Instance.EntitiesFacade.GetAutocompleteItems(token, AutocompleteKindSet.DeviceAppearance. AutocompleteKindID).Select( i => i.Title); return(model); }