Ejemplo n.º 1
0
        private StorageMediaCreateModel GetStorageSaveMediaModel(UploadFileData imageData, SavedFileInfo savedFile)
        {
            var storageSaveMediaModel = new StorageMediaCreateModel()
            {
                AdId             = imageData.AdId,
                FileType         = StorageFileType.Jpeg,
                IsPrimary        = imageData.IsPrimary,
                DateCreated      = DateTime.UtcNow,
                OriginalFileName = imageData.Name,
                Position         = imageData.Position
            };

            foreach (var picData in savedFile.ScaledPicsInfo)
            {
                storageSaveMediaModel.ScaledPicData.Add(new StoragePicScaledData()
                {
                    Size      = picData.Dimention,
                    PathParts = picData.FilePathParts,
                    PicType   = _mapper.Map <StoragePicType>(picData.ImgType)
                });
            }

            return(storageSaveMediaModel);
        }
Ejemplo n.º 2
0
        public Result <StorageMediaModel> SaveMedia(StorageMediaCreateModel model)
        {
            if (model == null)
            {
                return(Result <StorageMediaModel> .NewFailure($"{nameof(model)} is NULL."));
            }
            if (model.FileType != StorageFileType.Jpeg)
            {
                return(Result <StorageMediaModel> .NewFailure($"{nameof(model.FileType)} {model.FileType} is not supported."));
            }
            if (model.ScaledPicData.Any(x => x.PicType == StoragePicType.Unknown))
            {
                return(Result <StorageMediaModel> .NewFailure($"{nameof(StoragePicType)} {StoragePicType.Unknown} is not supported."));
            }


            var resultTmpAdId = _pgClinet.NewCommand()
                                .OnFunc("dating.ad_media__add")
                                .WithParam("p_ad_id", NpgsqlDbType.Bigint, model.AdId)
                                .WithParam("p_media_type_id", NpgsqlDbType.Integer, (int)model.FileType)
                                .WithParam("p_date_create", NpgsqlDbType.Timestamp, model.DateCreated)
                                .WithParam("p_is_primary", NpgsqlDbType.Boolean, model.IsPrimary)
                                .WithParam("p_position", NpgsqlDbType.Integer, model.Position)
                                .WithParam("p_original_file_name", NpgsqlDbType.Varchar, model.OriginalFileName)
                                .QueryScalarResult <long>();

            if (!resultTmpAdId.Success)
            {
                return(Result <StorageMediaModel> .NewFailure(resultTmpAdId.ErrorMessage));
            }

            var newId = resultTmpAdId.Value;

            switch (model.FileType)
            {
            case StorageFileType.Jpeg:
                foreach (var picData in model.ScaledPicData)
                {
                    var pathPartsJoined = string.Join(Consts.PathPartsSeparator, picData.PathParts);

                    var resultPicData = _pgClinet.NewCommand()
                                        .OnFunc("dating.ad_media_pic_data__add")
                                        .WithParam("p_ad_media_id", NpgsqlDbType.Bigint, newId)
                                        .WithParam("p_width", NpgsqlDbType.Integer, picData.Size.Width)
                                        .WithParam("p_height", NpgsqlDbType.Integer, picData.Size.Height)
                                        .WithParam("p_relative_path", NpgsqlDbType.Varchar, pathPartsJoined)
                                        .WithParam("p_pic_type", NpgsqlDbType.Varchar, picData.PicType.ToString())
                                        .QueryVoidResult();

                    if (!resultPicData.Success)
                    {
                        RemoveMedia(newId);
                        return(Result <StorageMediaModel> .NewFailure(resultPicData.ErrorMessage));
                    }
                }
                break;
            }

            var result = GetMedia(newId);

            return(result);
        }