Ejemplo n.º 1
0
        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).
        }
Ejemplo n.º 2
0
        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在“工作单元”范围结束时(没有任何例外)自动保存所有更改
        }
Ejemplo n.º 3
0
        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).
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        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).
        }
Ejemplo n.º 9
0
        public ActionResult Edit(UpdateTaskInput updateTaskDto)
        {
            _taskAppService.UpdateTask(updateTaskDto);

            var input  = new GetTasksInput();
            var output = _taskAppService.GetTasks(input);

            return(PartialView("_List", output.Tasks));
        }
Ejemplo n.º 10
0
        public JsonResult Edit(UpdateTaskInput updateTaskDto)
        {
            if (ModelState.IsValid)
            {
                _taskAppService.UpdateTask(updateTaskDto);

                return(Json(true, JsonRequestBehavior.AllowGet));
            }
            return(Json(false, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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);
            }
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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;
            }
        }
Ejemplo n.º 16
0
        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);
            }
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
            }
        }
Ejemplo n.º 19
0
        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).
        }
Ejemplo n.º 20
0
        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
        }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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));
        }
Ejemplo n.º 24
0
        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).
        }
Ejemplo n.º 25
0
        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框架会工作单元完成时自动保存对实体的所有更改,除非有异常抛出。有异常时会自动回滚,因为工作单元默认开启数据库事务。
        }
Ejemplo n.º 26
0
        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自动保存所有更改。
        }
Ejemplo n.º 27
0
 public void UpdateTask(UpdateTaskInput input)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 28
0
 public void UpdateTask([FromBody] UpdateTaskInput input)
 {
     _taskAppService.UpdateTask(input);
 }
 public IActionResult Update(UpdateTaskInput item)
 {
     _taskAppService.Update(item);
     return(Success());
 }
Ejemplo n.º 30
0
 public async System.Threading.Tasks.Task UpdateRtmService(UpdateTaskInput updateTaskInput)
 {
     await _taskAppService.UpdateTaskAsync(updateTaskInput);
 }