public async Task <int?> InsertNewCollaboratorTask([NotNull] CollaboratorTask task) { try { await _dbContext.CollaboratorTasks.AddAsync(task); var result = await _dbContext.SaveChangesAsync(); return(result == 0 ? -1 : task.Id); } catch (DbUpdateException e) { await _coreLogService.InsertRoutinizeCoreLog(new RoutinizeCoreLog { Location = $"{ nameof(CollaborationService) }.{ nameof(InsertNewCollaboratorTask) }", Caller = $"{ new StackTrace().GetFrame(4)?.GetMethod()?.DeclaringType?.FullName }", BriefInformation = nameof(DbUpdateException), DetailedInformation = $"Error while updating entry to CollaboratorTasks.\n\n{ e.StackTrace }", ParamData = $"{ nameof(task) } = { JsonConvert.SerializeObject(task) }", Severity = LogSeverity.High.GetEnumValue() }); return(null); } }
public async Task <JsonResult> AddNewSharedNote(SharedNoteVM noteData) { var errorMessages = noteData.VerifySharedNoteData(); if (errorMessages.Count != 0) { return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Data = errorMessages })); } var hasCollaboration = await _collaborationService.DoesUserHasThisCollaborator(noteData.Note.UserId, noteData.SharedToId); switch (hasCollaboration) { case null: return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Message = "An issue happened while getting data." })); case < 1: return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Message = "Collaborator not found." })); } noteData.Note.IsShared = true; await _noteService.StartTransaction(); var saveNoteResult = await _noteService.InsertNewNote(noteData.Note); if (!saveNoteResult.HasValue || saveNoteResult.Value < 1) { await _noteService.RevertTransaction(); return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Message = "An issue happened while updating data." })); } var collaboratorTask = new CollaboratorTask { CollaborationId = hasCollaboration.Value, TaskId = saveNoteResult.Value, TaskType = nameof(Note), Message = noteData.Message, AssignedOn = DateTime.UtcNow, Permission = (byte)noteData.Permission }; var saveTaskResult = await _collaborationService.InsertNewCollaboratorTask(collaboratorTask); if (!saveTaskResult.HasValue || saveTaskResult.Value < 1) { await _noteService.RevertTransaction(); return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Message = "An issue happened while updating data." })); } var noteOwner = await _userService.GetUserById(noteData.Note.UserId); if (noteOwner == null) { await _noteService.RevertTransaction(); return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Message = "An issue happened while getting data." })); } var isNotified = await SendNotification( noteOwner, noteData.SharedToId, new UserNotification { Message = $"{ TokenNotifierName } has just assigned a Todo to you. Please tap to see the item.", Title = "Task Assigned" }, _userService ); if (!isNotified) { await _noteService.RevertTransaction(); return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Failed, Message = "An issue happened while updating data." })); } await _noteService.CommitTransaction(); return(new JsonResult(new JsonResponse { Result = SharedEnums.RequestResults.Success, Data = saveNoteResult.Value })); }