public async Task <IActionResult> CreateNewPartGuide([FromForm] AddPartGuideDto guide) { var serviceResponse = await _guidesService.CreatePartGuide(guide); return(StatusCode(serviceResponse.StatusCode, serviceResponse.ToControllerResponse())); }
/// <inheritdoc /> public async Task <ServiceResponse <int> > CreatePartGuide(AddPartGuideDto newPartGuide) { var(isEditable, accessResponse, guide) = await GuideIsEditable <int>((int)newPartGuide.GuideId !); if (!isEditable) { return(accessResponse); } var serviceResponse = new ServiceResponse <int>(); var content = newPartGuide.Content; var file = newPartGuide.File; if (file == null && content == null || file != null && content != null) { serviceResponse.StatusCode = 400; serviceResponse.Message = "You should provide PDF or ZIP in file field or YouTube link in content field."; serviceResponse.MessageRu = "В поле content необходимо ввести ссылку на YouTube видео или в поле file прикрепить PDF или ZIP файл."; return(serviceResponse); } var partGuide = _mapper.Map <PartGuide>(newPartGuide); if (content != null && !Uri.IsWellFormedUriString(content, UriKind.Absolute)) { serviceResponse.StatusCode = 400; serviceResponse.Message = "You should provide valid URL in link field."; serviceResponse.MessageRu = "В поле link необходимо указать валидный URL адрес."; return(serviceResponse); } if (file != null) { var isPdf = file.ContentType == "application/pdf"; var isZip = file.ContentType == "application/zip" || file.ContentType == "application/x-zip-compressed"; if (!isPdf && !isZip) { serviceResponse.StatusCode = 400; serviceResponse.Message = "You should provide PDF or ZIP file."; serviceResponse.MessageRu = "Необходимо отправить PDF или ZIP файл."; return(serviceResponse); } if (_fileManager.FileExists(partGuide.GuideId, file.FileName)) { serviceResponse.StatusCode = 400; serviceResponse.Message = "File with this name already exists in this guide."; serviceResponse.MessageRu = "Файл с таким именем уже существует."; return(serviceResponse); } partGuide.Content = file.FileName; await _fileManager.SaveFile(partGuide.GuideId, file.FileName, file); } var partGuideId = await _guidesRepository.CreatePartGuide(partGuide); serviceResponse.StatusCode = 201; serviceResponse.Data = partGuideId; serviceResponse.Message = "Part guide is successfully created."; serviceResponse.MessageRu = "Гайд детали успешно создан."; return(serviceResponse); }