/// <summary> /// Creates or Updates task </summary> /// <param name="taskDto">task DTO</param> /// <param name="userDto">user who updates the task</param> public void SaveTask(Task1Dto taskDto, UserDto userDto) { var rep = UnitOfWork.GetRepository <Task1>(); var model = rep.GetById(taskDto.EntityId); if (model == null) { taskDto.CompanyId = userDto.CompanyId; taskDto.Index = (rep.SearchFor(e => e.CompanyId == userDto.CompanyId).Max(e => (int?)e.Index) ?? 0) + 1; model = this.Mapper.Map <Task1>(taskDto); rep.Insert(model, userDto.Id); } else { taskDto.CompanyId = userDto.CompanyId; this.Mapper.Map(taskDto, model); rep.Update(model, userDto.Id); } this.UnitOfWork.SaveChanges(); this.SaveTaskUsers(taskDto, userDto); this.CalculateTaskValues(model.EntityId, userDto); this.SetLastModifiedTaskId(taskDto.EntityId, userDto); }
/// <summary> /// Synchronizes responsibles </summary> /// <param name="taskDto">task DTO</param> /// <param name="userDto">user who updates the task</param> private void SaveTaskUsers(Task1Dto taskDto, UserDto userDto) { var rep = UnitOfWork.GetRepository <TaskUser>(); var models = rep.SearchFor(e => e.TaskId == taskDto.EntityId).ToList(); foreach (var model in models) { if (!taskDto.UserIds.Contains(model.UserId)) { rep.DeleteById(model.EntityId); } } foreach (var userId in taskDto.UserIds) { if (models.Any(e => e.UserId == userId) == false) { rep.Insert(new TaskUser() { TaskId = taskDto.EntityId, UserId = userId }, userDto.Id); } } this.UnitOfWork.SaveChanges(); this.SetTaskFavorite(taskDto.Favorite, taskDto.EntityId, userDto); }
public async Task <WebApiResult> SaveTask(Task1Dto task) { try { #if DEBUG await Task.Delay(300); #endif return(await Task.Factory.StartNew(() => { this._service.SaveTask(task, GetUserDto()); return WebApiResult.Succeed(new { EntityId = task.EntityId }); })); } catch (Exception e) { Logger.e("SaveTask", e); return(WebApiResult.Failed(e.Message)); } }