public void UpdateTask(UpdateTaskInput input) { //We can use Logger, it's defined in ApplicationService base class. Logger.Info("Updating a task for input: " + input); //Retrieving a task entity with given id using standard Get method of repositories. var task = _taskRepository.Get(input.TaskId); //Updating changed properties of the retrieved task entity. if (input.State.HasValue) { task.State = input.State.Value; } if (!string.IsNullOrWhiteSpace(input.Description)) { task.Description = input.Description; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } //We even do not call Update method of the repository. //Because an application service method is a 'unit of work' scope as default. //ABP automatically saves all changes when a 'unit of work' scope ends (without any exception). }
public void UpdateTask(UpdateTaskInput input) { Logger.Info("Updating a task for input:" + input); //获取当前用户 var currentUser = AsyncHelper.RunSync(this.GetCurrentUserAsync); //判断用户是否有权限 bool canAssignTaskToOther = PermissionChecker.IsGranted(PermissionNames.Pages_Tasks_AssignPerson); //如果任务已经分配且未分配给自己,且不具有分配任务权限,则抛出异常 if (input.AssignedPersonId.HasValue && input.AssignedPersonId.Value != currentUser.Id && !canAssignTaskToOther) { throw new AbpAuthorizationException("没有分配任务给他人的权限"); } var task = Mapper.Map <MyTask>(input);//taskRespository.Get(input.Id); taskRespository.Update(task); //if (input.State.HasValue) //{ // task.State = input.State.Value; //} //此处不用做保存操作 //因为应用程序服务方法是“工作单位”范围作为默认值 //ABP在“工作单元”范围结束时(没有任何例外)自动保存所有更改 }
public void UpdateTask(UpdateTaskInput input) { //We can use Logger, it's defined in ApplicationService base class. Logger.Info("Updating a task for input: " + input); var updateTask = Mapper.Map <Task>(input); _taskRepository.Update(updateTask); //Retrieving a task entity with given id using standard Get method of repositories. //var task = _taskRepository.Get(input.Id); //Updating changed properties of the retrieved task entity. //if (input.State.HasValue) //{ // updateTask.State = input.State.Value; //} //if (input.AssignedPersonId.HasValue) //{ // updateTask.AssignedPerson = _userRepository.Load(input.AssignedPersonId.Value); //} //We even do not call Update method of the repository. //Because an application service method is a 'unit of work' scope as default. //ABP automatically saves all changes when a 'unit of work' scope ends (without any exception). }
public void UpdateTask(UpdateTaskInput input) { //We can use Logger, it's defined in ApplicationService base class. Logger.Info("Updating a task for input: " + input); //获取是否有权限 //bool canAssignTaskToOther = PermissionChecker.IsGranted(PermissionNames.Pages_Tasks_AssignPerson); //如果任务已经分配且未分配给自己,且不具有分配任务权限,则抛出异常 if (input.AssignedPersonId.HasValue && input.AssignedPersonId.Value != AbpSession.GetUserId()) { var updateTask = Mapper.Map <Task>(input); var user = _userRepository.Get(input.AssignedPersonId.Value); //先执行分配任务 _taskManager.AssignTaskToPerson(updateTask, user); //再更新其他字段 _taskRepository.Update(updateTask); ////发送通知 //var message = "You hava been assigned one task into your todo list."; //_smtpEmailSender.Send("*****@*****.**", updateTask.AssignedPerson.EmailAddress, "New Todo item", message); //_notificationPublisher.Publish("NewTask", new MessageNotificationData(message), null, // NotificationSeverity.Info, new[] { updateTask.AssignedPerson.ToUserIdentifier() }); } }
public void Should_Assign_Task_To_Another_With_Permission() { //Arrange var defaultTask = UsingDbContext(ctx => ctx.Tasks.FirstOrDefault()); var testUser = UsingDbContext(ctx => ctx.Users.FirstOrDefault(u => u.UserName == "TestUser")); var updateTask = new UpdateTaskInput() { Title = defaultTask.Title, Description = defaultTask.Description, Id = defaultTask.Id, State = defaultTask.State, AssignedPersonId = defaultTask.AssignedPersonId }; updateTask.Description = "update task"; updateTask.AssignedPersonId = testUser.Id; //Act _taskAppService.UpdateTask(updateTask); var updatedTask = _taskAppService.GetTaskById(updateTask.Id); //Assert updatedTask.Id.ShouldBe(updatedTask.Id); updatedTask.Description.ShouldBe(updatedTask.Description); updatedTask.AssignedPersonId.ShouldBe(testUser.Id); }
public void Should_Not_Assign_Task_To_Other() { //Arrange LoginAsTenant(Tenant.DefaultTenantName, "TestUser"); //获取admin用户 var adminUser = UsingDbContext(ctx => ctx.Users.FirstOrDefault(u => u.UserName == User.AdminUserName)); var defaultTask = UsingDbContext(ctx => ctx.Tasks.FirstOrDefault()); var updateTask = new UpdateTaskInput() { Title = defaultTask.Title, Description = defaultTask.Description, Id = defaultTask.Id, State = defaultTask.State, AssignedPersonId = defaultTask.AssignedPersonId }; updateTask.AssignedPersonId = adminUser.Id; //Act,Assert Assert.Throws <AbpAuthorizationException>(() => _taskAppService.UpdateTask(updateTask)); }
public void Update(UpdateTaskInput input) { if (input == null) { Logger.Error($"{nameof(input)} should not be null."); return; } var task = DbContext.Task.FirstOrDefault(a => a.Id == input.Id); if (task == null) { throw new Exception("Unfound task."); } task.Analysts = input.Analysts?.Trim(); task.ApplicationName = input.ApplicationName?.Trim(); task.Arguments = input.Arguments?.Trim(); task.Cron = input.Cron; task.Description = input.Description?.Trim(); task.Developers = input.Developers?.Trim(); task.Name = input.Name?.Trim(); task.NodeCount = input.NodeCount; task.NodeRunningCount = input.NodeRunningCount; task.Os = input.Os?.Trim(); task.Owners = input.Owners?.Trim(); task.Tags = input.Tags?.Trim(); task.NodeType = input.NodeType; task.Package = input.Package?.Trim(); task.IsSingle = input.IsSingle; if (!input.IsEnabled && task.IsEnabled && task.Cron == Configuration.IngoreCron) { _schedulerAppService.Delete(task.Id.ToString()); } if (input.IsEnabled) { var taskId = task.Id.ToString(); var job = new SchedulerJobDto { Id = taskId, Name = task.Name, Cron = task.Cron, Url = string.Format(Configuration.SchedulerCallback, taskId), Content = JsonConvert.SerializeObject(new { TaskId = taskId }) }; if (!task.Name.StartsWith(job.Group)) { task.Name = $"[{job.Group}]{task.Name}"; } _schedulerAppService.Update(job); } task.IsEnabled = input.IsEnabled; DbContext.Task.Update(task); DbContext.SaveChanges(); }
public void UpdateTask(UpdateTaskInput input) { //可以直接Logger,它在ApplicationService基类中定义的 Logger.Info("Updating a task for input: " + input); //通过仓储基类的通用方法Get,获取指定Id的Task实体对象 var task = _taskRepository.Get(input.TaskId); //修改task实体的属性值 if (input.State.HasValue) { task.State = input.State.Value; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } //我们都不需要调用Update方法 //因为应用服务层的方法默认开启了工作单元模式(Unit of Work) //ABP框架会工作单元完成时自动保存对实体的所有更改,除非有异常抛出。有异常时会自动回滚,因为工作单元默认开启数据库事务。 //We even do not call Update method of the repository. //Because an application service method is a 'unit of work' scope as default. //ABP automatically saves all changes when a 'unit of work' scope ends (without any exception). }
public ActionResult Edit(UpdateTaskInput updateTaskDto) { _taskAppService.UpdateTask(updateTaskDto); var input = new GetTasksInput(); var output = _taskAppService.GetTasks(input); return(PartialView("_List", output.Tasks)); }
public JsonResult Edit(UpdateTaskInput updateTaskDto) { if (ModelState.IsValid) { _taskAppService.UpdateTask(updateTaskDto); return(Json(true, JsonRequestBehavior.AllowGet)); } return(Json(false, JsonRequestBehavior.AllowGet)); }
public void UpdateTask(UpdateTaskInput input) { //We can use Logger, it's defined in ApplicationService base class. Logger.Info("Updating a task for input: " + input); var updateTask = Mapper.Map <Task>(input); //再更新其他字段 _taskRepository.Update(updateTask); }
public ActionResult Edit(UpdateTaskInput updateTaskDto) { if (ModelState.IsValid) { _taskAppService.UpdateTask(updateTaskDto); //return Json(true, JsonRequestBehavior.AllowGet); return(RedirectToAction("List")); } //return Json(false, JsonRequestBehavior.AllowGet); return(View(updateTaskDto)); }
public void UpdateTask(UpdateTaskInput input) { Logger.Info("Updating a task for input: " + input); // TODO: Implement feature var task = _taskRepository.Get(input.TaskId); if (task != null) { task.State = input.State.GetValueOrDefault(); _taskRepository.Update(task); } }
public async System.Threading.Tasks.Task Update(UpdateTaskInput input) { //C1: var task = await _taskRepository.FirstOrDefaultAsync(t => t.Id == input.Id); ObjectMapper.Map(input, task); //var task = GetTask(input.Id); //C2: //var output = ObjectMapper.Map<Task>(input); //await _taskRepository.UpdateAsync(output); }
public async System.Threading.Tasks.Task UpdateTaskAsync(UpdateTaskInput input) { Logger.Info($"Updating a task for input: {input}"); var task = await _taskRepository.GetAsync(input.TaskId); if (input.State.HasValue && input.State.Value != task.State) { task.State = input.State.Value; task.LastModificationTime = DateTime.Now; } }
public void UpdateTask(UpdateTaskInput input) { Logger.Info("Updating a task for input:" + input); var task = _taskRepository.Get(input.TaskId); if (input.State.HasValue) { task.State = input.State.Value; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } }
public void UpdateTask(UpdateTaskInput input) { //We can use Logger, it's defined in ApplicationService base class. Logger.Info("Updating a task for input: " + input); var updateTask = Mapper.Map <Task>(input); var user = _userRepository.Get(input.AssignedPersonId.Value); //先执行分配任务 _taskManager.AssignTaskToPerson(updateTask, user); //再更新其他字段 _taskRepository.Update(updateTask); }
public async Task Update(UpdateTaskInput input) { Logger.Info("Updating a task for input" + input); var task = await _taskRepository.GetAsync(input.SimplaTaskId); if (input.AssignedPersonId.HasValue) { task.AssignedPersonId = input.AssignedPersonId; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } }
public void UpdateTask(UpdateTaskInput input) { Logger.Info("Updating a task for input: " + input); // var task = _taskRepository.Get(input.Id); //Updating changed properties of the retrieved task entity. if (input.State.HasValue) { task.State = input.State.Value; } //We even do not call Update method of the repository. //Because an application service method is a 'unit of work' scope as default. //ABP automatically saves all changes when a 'unit of work' scope ends (without any exception). }
public void UpdateTask(UpdateTaskInput input) { Logger.Info("Updating a task for input: " + input); var task = _taskRepository.Get(input.TaskId); if (task != null) { task.State = (TaskState)input.State; _taskRepository.Update(task); } // TODO: Implement feature }
public void UpdateTask(UpdateTaskInput input) { //We can use Logger, it's defined in ApplicationService base class. Logger.Info("Updating a task for input: " + input); //获取是否有权限 bool canAssignTaskToOther = PermissionChecker.IsGranted(PermissionNames.Pages_Tasks_AssignPerson); //如果任务已经分配且未分配给自己,且不具有分配任务权限,则抛出异常 if (input.AssignedPersonId.HasValue && input.AssignedPersonId.Value != AbpSession.GetUserId() && !canAssignTaskToOther) { throw new AbpAuthorizationException("没有分配任务给他人的权限!"); } var updateTask = Mapper.Map <Task>(input); _taskRepository.Update(updateTask); }
public void UpdateTask(UpdateTaskInput input) { var task = _taskRepository.FirstOrDefault(input.Id); if (task == null) { throw new Exception("Can not found the task!"); } var currentUser = _userRepository.Load(AbpUser.CurrentUserId.Value); //TODO: Add method LoadCurrentUser and GetCurrentUser ??? if (!_taskPolicy.CanUpdateTask(currentUser, task)) { throw new UserFriendlyException("You can not update this task!"); } if (task.AssignedUser.Id != input.AssignedUserId) { var userToAssign = _userRepository.Load(input.AssignedUserId); if (!_taskPolicy.CanAssignTask(currentUser, userToAssign)) { throw new UserFriendlyException("You can not assign task to this user!"); } task.AssignedUser = userToAssign; } var oldTaskState = task.State; //TODO: Can we use Auto mapper? task.Description = input.Description; task.Priority = (TaskPriority)input.Priority; task.State = (TaskState)input.State; task.Privacy = (TaskPrivacy)input.Privacy; task.Title = input.Title; if (oldTaskState != TaskState.Completed && task.State == TaskState.Completed) { _eventBus.Trigger(this, new TaskCompletedEventData(task)); //_notificationService.Notify(new CompletedTaskNotification(task)); } }
public JsonResult Edit(UpdateTaskInput updateTaskDto) { if (ModelState.IsValid) { _taskAppService.UpdateTask(updateTaskDto); var input = new GetTasksInput(); var output = _taskAppService.GetTasks(input); var module = new IndexViewModel(output.Tasks) { SelectedTaskState = input.State, CreateTaskInput = new CreateTaskInput(), UpdateTaskInput = new UpdateTaskInput() }; return(Json(true, JsonRequestBehavior.AllowGet)); } return(Json(false, JsonRequestBehavior.AllowGet)); }
public void UpdateTask(UpdateTaskInput input) { Logger.Info("Updating a task for input: " + input); var task = _taskRepository.Get(input.TaskId); if (input.State.HasValue) { task.State = input.State.Value; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } //_taskRepository.Update(task); //We even do not call Update method of the repository. //Because an application service method is a 'unit of work' scope as default. //ABP automatically saves all changes when a 'unit of work' scope ends (without any exception). }
public void UpdateTask(UpdateTaskInput input) { //可以直接Logger,它在ApplicationService基类中定义的 Logger.Info("Updating a task for input: " + input); //找不到会抛出异常 var task = _taskRepository.Get(input.TaskId); if (input.State.HasValue) { task.State = input.State.Value; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } //我们都不需要调用Update方法 //因为应用服务层的方法默认开启了工作单元模式(Unit of Work) //ABP框架会工作单元完成时自动保存对实体的所有更改,除非有异常抛出。有异常时会自动回滚,因为工作单元默认开启数据库事务。 }
public void UpdateTask(UpdateTaskInput input) { //我们可以使用Logger,它在应用服务基类中定义 Logger.Info("Updating a task for input:" + input); //使用仓储的标准方法Get通过给定的id重新获取task实体 var task = _taskRepository.Get(input.TaskId); //更新重新获取的task实体的属性 if (input.State.HasValue) { task.State = input.State.Value; } if (input.AssignedPersonId.HasValue) { task.AssignedPerson = _personRepository.Load(input.AssignedPersonId.Value); } //我们不需要调用仓储的Update方法。因为应用服务方法默认为一个工作单元。 //当工作单元结束时(没有任何异常),ABP自动保存所有更改。 }
public void UpdateTask(UpdateTaskInput input) { throw new NotImplementedException(); }
public void UpdateTask([FromBody] UpdateTaskInput input) { _taskAppService.UpdateTask(input); }
public IActionResult Update(UpdateTaskInput item) { _taskAppService.Update(item); return(Success()); }
public async System.Threading.Tasks.Task UpdateRtmService(UpdateTaskInput updateTaskInput) { await _taskAppService.UpdateTaskAsync(updateTaskInput); }