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); } }
public IActionResult Create(NewTrainingMaterialViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var request = new TrainingMaterialRequest { ClubId = club.Guid, ContentType = model.ContentType, Description = model.Description, OriginalFileName = model.FileName, Stream = model.File.OpenReadStream(), Title = model.Title }; var response = libraryService.AddTrainingMaterial(request); if (!response.RequestIsFulfilled) { foreach (var error in response.Errors) { ModelState.AddModelError("", error); return(View(model)); } } return(RedirectToAction(nameof(Index))); }
private TrainingMaterial MapTrainingMaterial(TrainingMaterialRequest request, UploadResult uploadResult) => new TrainingMaterial(request.ClubId) { ContentType = request.ContentType, Description = request.Description, ExternalId = uploadResult.Id, Title = request.Title, Url = uploadResult.Url, ThumbnailUrl = uploadResult.ThumbnailUrl };