public async Task <ObjectResult> Get(string classId) { Guid _classId; try { if (!Guid.TryParse(classId, out _classId)) { return(BadRequest(classId)); } var response = await _classProvider.Retrieve(classId); return(response.Success ? StatusCode((int)HttpStatusCode.OK, response) : StatusCode((int)HttpStatusCode.NotFound, response)); } catch (Exception ex) { /* * await _firehoseProvider.PublishAsync(Topics.Logs, new Activity<string>(){ Id = Guid.NewGuid().ToString(), * Timestamp = DateTime.UtcNow, * Payload = new ActivityPayload<string>() * { Data = string.Format($"ClassesController: Get(), ClassId: {classId}, Error: {ex}")}, * ActivityType = ActivityType.Log}); */ return(StatusCode((int)HttpStatusCode.InternalServerError, new ProviderResponse <IClass>() { Success = false, ResponseStatus = CustomResponseErrors.ClassRetrieveFailed.ToString("f"), Exception = ex, Message = ex.Message })); } }
public async Task <ObjectResult> Delete(string studentId) { Guid _studentId; try { if (!Guid.TryParse(studentId, out _studentId)) { return(BadRequest(studentId)); } var response = await _studentProvider.Delete(studentId); if (response.Success) { List <Task> deleteTasks = new List <Task>(), updateIndexTasks = new List <Task>(); var retrieveUpdatedTasks = new List <Task <IProviderResponse <IClass> > >(); updateIndexTasks.Add(_searchProvider.RemoveFromElastic(response.Data)); /* * await _firehoseProvider.PublishAsync(Topics.Logs | Topics.SearchIndexes, new Activity<IClass>() * { * Id = Guid.NewGuid().ToString(), * ActivityType = ActivityType.StudentDelete, * Timestamp = DateTime.UtcNow, * Payload = new ActivityPayload<IClass>(){ * Data = response.Data * } * } * ); */ foreach (var classCode in response.Data.EnrolledClassCodes) { deleteTasks.Add(_classProvider.UnEnroll(classCode, response.Data.StudentId)); } await Task.WhenAll(deleteTasks); foreach (var classCode in response.Data.EnrolledClassCodes) { retrieveUpdatedTasks.Add(_classProvider.Retrieve(classCode)); } await Task.WhenAll(retrieveUpdatedTasks); foreach (var completedTask in retrieveUpdatedTasks) { if (completedTask.Result.Success) { var updatedClass = completedTask.Result.Data; updateIndexTasks.Add(_searchProvider.UpdateElastic(updatedClass)); } } await Task.WhenAll(updateIndexTasks); return(StatusCode((int)HttpStatusCode.OK, response)); } else { /* * await _firehoseProvider.PublishAsync(Topics.Logs, new Activity<string>(){ Id = Guid.NewGuid().ToString(), * Timestamp = DateTime.UtcNow, * Payload = new ActivityPayload<string>() * { Data = string.Format($"ClassesController: Edit(), RequestJson: {classUpdateRequestJson}, ErrorResponse: {response}")}, * ActivityType = ActivityType.Log}); */ return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } } catch (Exception ex) { /* * await _firehoseProvider.PublishAsync(Topics.Logs, new Activity<string>(){ Id = Guid.NewGuid().ToString(), * Timestamp = DateTime.UtcNow, * Payload = new ActivityPayload<string>() * { Data = string.Format($"ClassesController: Delete(), ClassId: {classId}, Exception: {ex}")}, * ActivityType = ActivityType.Log}); */ return(StatusCode((int)HttpStatusCode.InternalServerError, new ProviderResponse <IClass>() { Success = false, ResponseStatus = CustomResponseErrors.StudentUpdateFailed.ToString("f"), Exception = ex, Message = ex.Message })); } }