示例#1
0
        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);
            }
        }
示例#2
0
        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)));
        }
示例#3
0
 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
 };