public Response AddTrainingMaterial(TrainingMaterialRequest request) { var validationResult = trainingMaterialRequestValidator.Validate(request); if (!validationResult.IsValid) { return(Response.CreateResponse(validationResult.Messages)); } var handler = fileHandlerFactory.GetFileHandler(request.ContentType); var uploadResponse = handler.Upload(new UploadRequest { ContentType = request.ContentType, OriginalFileName = request.OriginalFileName, Stream = request.Stream, Description = request.Description, Title = request.Title }); if (!uploadResponse.Response.RequestIsFulfilled) { return(Response.CreateResponse(uploadResponse.Response.Errors)); } TrainingMaterial material = MapTrainingMaterial(request, uploadResponse.Result); try { libraryRepository.AddTrainingMaterial(material); return(Response.CreateSuccessResponse()); } catch (Exception ex) { return(Response.CreateResponse(ex)); } finally { UpdateCache(request.ClubId); } }