public async Task <bool> Handle(RegisterUserRequest request, IOutputPort <RegisterUserResponse> outputPort)
        {
            if (_userRepository.FindByEmail(request.Email) != null)
            {
                outputPort.Handle(new RegisterUserResponse(new[] { new Error(422, "user with this email is already exists") }));
                return(false);
            }
            var userInfo = new UserDto()
            {
                Name         = request.Name,
                Email        = request.Email,
                BirthDay     = request.BirthDay,
                PasswordHash = request.PasswordHash,
            };
            UserDto createdUser = _userRepository.Create(userInfo);

            if (request.Picture != null)
            {
                var uploadedPicture = await _uploadService.UploadFile(request.Picture, request.WebRootPath);

                UploadedFileDto uploadedFile = _uploadedFileRepository.Create(uploadedPicture);
                uploadedPicture.Id = uploadedFile.Id;

                ImageDto createdPicture = _imageRepository.Create(new ImageDto()
                {
                    UserId = createdUser.Id
                }, request.WebRootPath, uploadedPicture);
                createdUser = _userRepository.SetUserProfilePicture(createdPicture.Id, createdUser.Id);
            }
            outputPort.Handle(new RegisterUserResponse(createdUser));
            return(true);
        }
Example #2
0
        public async Task <bool> Handle(NewVideoRequest request, IOutputPort <NewVideoResponse> outputPort)
        {
            if (_userRepository.FindById(request.UserId) == null)
            {
                outputPort.Handle(new NewVideoResponse(new[] { new Error(404, "user not found") }));
                return(false);
            }
            if (_channelRepository.FindByUserId(request.UserId) == null)
            {
                outputPort.Handle(new NewVideoResponse(new[] { new Error(404, "you must have to create channel") }));
                return(false);
            }

            UploadedFileDto videoInfo = await _uploadService.UploadFile(request.VideoFile, request.WebRootPath);

            UploadedFileDto previewInfo = await _uploadService.UploadFile(request.VideoPreview, request.WebRootPath);

            UploadedFileDto uploadedVideo   = _uploadedFileRepository.Create(videoInfo);
            UploadedFileDto uploadedPreview = _uploadedFileRepository.Create(previewInfo);

            previewInfo.Id = uploadedPreview.Id;

            ImageDto videoPreview = _imageRepository.Create(new ImageDto()
            {
                UserId = request.UserId
            }, request.WebRootPath, previewInfo);
            var video = new VideoDto()
            {
                Description    = request.Description,
                Name           = request.Name,
                Views          = 0,
                Likes          = 0,
                Dislikes       = 0,
                PreviewImageId = videoPreview.Id,
                UserId         = request.UserId,
                UploadedFileId = uploadedVideo.Id,
            };
            VideoDto createdVideo = _videoRepository.Create(video);

            outputPort.Handle(new NewVideoResponse(createdVideo));
            return(true);
        }
        public IActionResult UploadFile([FromQuery] string directory)
        {
            var lang          = Request.Headers["language"].ToString();
            var errorMessages = new List <string>();

            try
            {
                var path = Path.Combine(_webHostEnvironment.WebRootPath, "appData", directory);
                var dir  = _directoryRepository.FindByPath(directory);

                foreach (var file in Request.Form.Files)
                {
                    if (file.Length > 0)
                    {
                        string originalFileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');

                        string fileName = $"_{DateTime.Now.ToString("yyyyMMddHHmmssffff")}"
                                          + Path.GetExtension(originalFileName);

                        string fullPath = Path.Combine(path, fileName);

                        using (var stream = new FileStream(fullPath, FileMode.Create))
                        {
                            file.CopyTo(stream);
                        }

                        //var serverUrl = "https://localhost:44383";
                        var serverUrl = "https://qasrawi.fr";


                        var newFile = new UploadedFile()
                        {
                            UploadDirectory  = dir,
                            DownloadPath     = Path.Combine(serverUrl, "appData", dir.Path, fileName).Replace("\\", "/"),
                            UploadDateTime   = DateTime.Now,
                            FileType         = Path.GetExtension(originalFileName),
                            OriginalFileName = originalFileName,
                            ModifiedFileName = fileName,
                            UploadPath       = Path.Combine(dir.Path, fileName)
                        };
                        var createdFile = _uploadedFileRepository.Create(newFile);
                    }
                }


                return(Ok(new { status = "File Uploaded" }));
            }
            catch
            {
                errorMessages.Add(_translator.GetTranslation("ERROR", lang));
                return(BadRequest(new { errors = errorMessages }));
            }
        }