public async Task <IActionResult> Remove(int id, [FromBody] TimeTaskApi item) { if (!item.Date.HasValue) { ModelState.AddModelError("Date", "Required Date is null or empty."); return(new BadRequestObjectResult(ModelState)); } var task = await DbContext.Tasks.Where(t => t.Group.PartitionId == CurrentPartitionId && t.Id == id).FirstOrDefaultAsync(); if (task == null) { throw new NotFoundResultException($"Task (TaskId:{id}) not found."); } var taskItem = await DbContext.TaskItems.Where(w => w.UserId == CurrentUserId && w.TaskId == id && w.Date == item.Date).FirstOrDefaultAsync(); if (taskItem != null) { DbContext.TaskItems.Remove(taskItem); } var defaultTaskTask = await DbContext.DefaultTasks.Where(tdt => tdt.UserId == CurrentUserId && tdt.TaskId == id).FirstOrDefaultAsync(); if (defaultTaskTask != null) { DbContext.DefaultTasks.Remove(defaultTaskTask); } await DbContext.SaveChangesAsync(); return(Ok()); }
private async Task AddToDefaultTaskIfNotExists(long id, TimeTaskApi item, Ttask task) { if (item.Date.HasValue && item.Date.Value.Date == DateTime.Now.Date) { if (await DbContext.DefaultTasks.Where(td => td.UserId == CurrentUserId && td.TaskId == id).CountAsync() <= 0) { DbContext.DefaultTasks.Add(new DefaultTask { UserId = CurrentUserId, Task = task }); } } }
public async Task <IActionResult> Post([FromBody] TimeTaskApi item) { await CleanWhiteSpace(item); if (!ModelState.IsValidUpdated()) { return(new BadRequestObjectResult(ModelState)); } var task = await DbContext.Tasks.Where(t => t.Group.PartitionId == CurrentPartitionId && t.GroupId == item.GroupId && t.Name.Equals(item.Name, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefaultAsync(); if (task == null) { if (!(await DbContext.Groups.Where(g => g.PartitionId == CurrentPartitionId && g.Id == item.GroupId).AnyAsync())) { throw new NotFoundResultException($"Group (GroupId:{item.GroupId}) not found."); } task = new Ttask { GroupId = item.GroupId.Value, Name = item.Name }; DbContext.Tasks.Add(task); if (item.Date.HasValue && item.Date.Value.Date == DateTime.Now.Date) { DbContext.DefaultTasks.Add(new DefaultTask { UserId = CurrentUserId, Task = task }); } await DbContext.SaveChangesAsync(); } else { await MapDeltaValuesAndCleanWhiteSpace(item, task, includeForeignId : true); if (!ModelState.IsValidUpdated()) { return(new BadRequestObjectResult(ModelState)); } await AddToDefaultTaskIfNotExists(task.Id, item, task); await DbContext.SaveChangesAsync(); } item.Id = task.Id; item.Name = task.Name; return(Json(item)); }
public async Task <IActionResult> Patch(long id, [FromBody] TimeTaskApi item) { var task = await DbContext.Tasks.Where(t => t.Group.PartitionId == CurrentPartitionId && t.Id == id).FirstOrDefaultAsync(); if (task == null) { throw new NotFoundResultException($"Task (TaskId:{id}) not found."); } await MapDeltaValuesAndCleanWhiteSpace(item, task, includeForeignId : true); if (!ModelState.IsValidUpdated()) { return(new BadRequestObjectResult(ModelState)); } await AddToDefaultTaskIfNotExists(id, item, task); await DbContext.SaveChangesAsync(); item.Id = id; return(Json(item)); }
private string GroupTaskUniquId(DateTime date, string[] changedUniqIds, TimeGroupApi group, TimeTaskApi task) { var uniquId = $"g{group.Id}t{task.Id}{(task.Item?.Id != null ? $"ti{task.Item?.Id}" : "")}"; return(ChangedUniquId(date, changedUniqIds, uniquId)); }