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