public ResponseBo <PersonProductProfileBo> GetProfile(PersonProductProfileGetCriteriaBo criteriaBo)
        {
            if (criteriaBo.CaseId == 0 && (criteriaBo.PersonUrlName.IsNull() || criteriaBo.PersonUrlName.Trim().Length > 50))
            {
                return(new ResponseBo <PersonProductProfileBo>()
                {
                    IsSuccess = false,
                    Message = Stc.GetDicValue("xNoShopFound", criteriaBo.Session.RealPerson.LanguageId)
                });
            }
            else if (criteriaBo.CaseId == 1 && criteriaBo.PersonProductId.IsNull())
            {
                return(new ResponseBo <PersonProductProfileBo>()
                {
                    IsSuccess = false,
                    Message = Stc.GetDicValue("xInvalidData", criteriaBo.Session.RealPerson.LanguageId)
                });
            }

            ResponseBo <PersonProductProfileBo> responseBo = new ResponseBo <PersonProductProfileBo>();

            try
            {
                using (SqlConnection conn = DbAccess.Connection.GetConn())
                {
                    var p = new DynamicParameters();
                    p.Add("@Message", dbType: DbType.String, direction: ParameterDirection.Output, size: 255);
                    p.Add("@IsSuccess", dbType: DbType.Boolean, direction: ParameterDirection.Output);

                    p.Add("@CaseId", criteriaBo.CaseId, DbType.Int32, ParameterDirection.Input);

                    p.Add("@PersonUrlName", criteriaBo.PersonUrlName, DbType.String, ParameterDirection.Input, 50);
                    p.Add("@ProductCode", criteriaBo.ProductCode, DbType.String, ParameterDirection.Input, 50);

                    p.Add("@PersonProductId", criteriaBo.PersonProductId, DbType.Int64, ParameterDirection.Input);

                    p.Add("@MyPersonId", criteriaBo.Session.MyPerson.Id, DbType.Int64, ParameterDirection.Input);
                    p.Add("@OperatorRealId", criteriaBo.Session.RealPerson.Id, DbType.Int64, ParameterDirection.Input);
                    p.Add("@LanguageId", criteriaBo.Session.RealPerson.LanguageId, DbType.Int32, ParameterDirection.Input);

                    responseBo.Bo        = conn.Query <PersonProductProfileBo>("spPersonProductProfileGet", p, commandType: CommandType.StoredProcedure).FirstOrDefault();
                    responseBo.Message   = p.Get <string>("@Message");
                    responseBo.IsSuccess = p.Get <bool>("@IsSuccess");

                    if (responseBo.Bo != null)
                    {
                        if (responseBo.Bo.CodeListRawJson.IsNotNull())
                        {
                            responseBo.Bo.CodeList = JsonConvert.DeserializeObject <List <ProductCodeBo> >(responseBo.Bo.CodeListRawJson);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                responseBo = base.SaveExLog(ex, this.GetType(), MethodBase.GetCurrentMethod().Name, null).ToResponse <PersonProductProfileBo>();
            }

            return(responseBo);
        }
        public ResponseDto <PersonProductProfileDto> GetProfile(PersonProductProfileGetCriteriaDto criteriaDto)
        {
            PersonProductProfileGetCriteriaBo criteriaBo = new PersonProductProfileGetCriteriaBo
            {
                CaseId = criteriaDto.CaseId,

                PersonUrlName = criteriaDto.PersonUrlName,
                ProductCode   = criteriaDto.ProductCode,

                PersonProductId = criteriaDto.PersonProductId,

                Session = Session
            };

            ResponseBo <PersonProductProfileBo> responseBo = personProductBusiness.GetProfile(criteriaBo);

            ResponseDto <PersonProductProfileDto> responseDto = responseBo.ToResponseDto <PersonProductProfileDto, PersonProductProfileBo>();

            if (responseBo.IsSuccess && responseBo.Bo != null)
            {
                responseDto.Dto = new PersonProductProfileDto()
                {
                    PersonProductId        = responseBo.Bo.PersonProductId,
                    CategoryId             = responseBo.Bo.CategoryId,
                    OnlineSalePrice        = responseBo.Bo.OnlineSalePrice,
                    SalePrice              = responseBo.Bo.SalePrice,
                    StarCount              = responseBo.Bo.StarCount,
                    StarSum                = responseBo.Bo.StarSum,
                    Balance                = responseBo.Bo.Balance,
                    Notes                  = responseBo.Bo.Notes,
                    IsSaleForOnline        = responseBo.Bo.IsSaleForOnline,
                    IsTemporarilyUnavaible = responseBo.Bo.IsTemporarilyUnavaible,

                    IsShopOwner = responseBo.Bo.IsShopOwner,

                    ProductId     = responseBo.Bo.ProductId,
                    ProductTypeId = responseBo.Bo.ProductTypeId,
                    ProductName   = responseBo.Bo.ProductName,

                    ShopId                = responseBo.Bo.ShopId,
                    ShopFullName          = responseBo.Bo.ShopFullName,
                    ShopStarCount         = responseBo.Bo.ShopStarCount,
                    ShopStarSum           = responseBo.Bo.ShopStarSum,
                    ShopDefaultCurrencyId = responseBo.Bo.ShopDefaultCurrencyId,
                    ShopUrlName           = responseBo.Bo.ShopUrlName,
                    ShopIsAvailable       = responseBo.Bo.ShopIsAvailable,
                    ShopTypeName          = responseBo.Bo.ShopTypeName,

                    PortraitImageUniqueIdStr = base.GetImageName(responseBo.Bo.PortraitImageUniqueId, responseBo.Bo.PortraitImageFileTypeId),

                    CodeList = (from x in responseBo.Bo.CodeList
                                select new ProductCodeDto()
                    {
                        Code = x.Code,
                        ProductCodeTypeId = x.ProductCodeTypeId,
                        ProductId = x.ProductId
                    }).ToList()
                };
            }

            return(responseDto);
        }