private void quanLyTaiKhoanToolStripMenuItem_Click(object sender, EventArgs e)
        {
            lblTitle.Text = "Quản lý tài khoản";
            UCUser uc = new UCUser();

            addControlToPanel(uc);
        }
Example #2
0
        private void barBtnQuanLyTaiKhoan_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraUserControl xtraUserControl = new UCUser();

            xtraUserControl.Name = barBtnQuanLyTaiKhoan.Name + "UControl";
            xtraUserControl.Text = barBtnQuanLyTaiKhoan.Caption;
            xtraUserControl.Dock = DockStyle.Fill;
            lblCurrent.Caption   = "Quản lý tài khoản";
            addTab(xtraUserControl);
        }
Example #3
0
        /// <summary>
        ///     更新一个AdGroup
        /// </summary>
        /// <param name="userId">用户编号</param>
        /// <param name="accountId">账户编号</param>
        /// <param name="adGroup">需要更新的AdGroup</param>
        /// <param name="user">UC用户信息</param>
        /// <returns>返回执行后的结果</returns>
        /// <exception cref="ArgumentNullException">参数不能为空</exception>
        public IExecuteResult Update(uint userId, ulong accountId, AdGroup adGroup, UCUser user)
        {
            if (adGroup == null)
            {
                throw new ArgumentNullException("adGroup");
            }
            try
            {
                //获取参数的值
                object[] parameterValues = new object[] { adGroup.CampaignId, accountId, adGroup.AdGroupId, userId };
                //验证CampaignId、AccountId、AdGroup从属关系
                DataTable dt = _slaveDB.SpExecuteTable(SpName.SpIsNotExistByAccountIdAndCampaignIdAndAdGroupId,
                                                       ParametersObject.IsNotExistByAccountIdAndCampaignIdAndAdGroupId,
                                                       new object[] { accountId, adGroup.CampaignId, adGroup.AdGroupId, userId });
                if (dt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, SpName.SpIsNotExistByAccountIdAndCampaignIdAndAdGroupId + ":Executed count = 0"));
                }
                //check publish id.
                if (!string.IsNullOrEmpty(adGroup.PublishId))
                {
                    string[] subIds = adGroup.PublishId.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string subId in subIds)
                    {
                        dt = _slaveDB.SpExecuteTable(SpName.SpGetAppByPublishId, ParametersObject.GetAppByPublishId, new object[] { subId });
                        if (dt.Rows.Count == 0)
                        {
                            return(ExecuteResult.Fail(SystemErrors.NotFound, string.Format("#There isn't any records indicated that this publish id: {0} is valid.", subId)));
                        }
                    }
                }
                dt = _slaveDB.SpExecuteTable(SpName.SpGetAdGroupByAdGroupId, ParametersObject.CheckAndGetAdGroup, parameterValues);
                if (dt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, SpName.SpGetAdGroupByAdGroupId + ":Executed count = 0"));
                }
                //check account type.
                DataTable accountTypeDt = _slaveDB.SpExecuteTable(SpName.SpGetAccountTypeFromAccountDetail, ParametersObject.GetAccountTypeFromAccountDetail, new object[] { accountId });
                if (accountTypeDt.Rows.Count == 0)
                {
                    return(ExecuteResult.Fail(SystemErrors.NotFound, "#There isn't any accout accords current condition: AccountId: " + accountId));
                }
                AccountTypes accountTypes = (AccountTypes)byte.Parse(accountTypeDt.Rows[0]["AccountTypeID"].ToString());

                #region Different Login Platform Logical.

                UASToken token;
                if (!UASToken.TryParse(user.Token, out token))
                {
                    return(ExecuteResult.Fail(SystemErrors.AuthoriztionFail, "#Sadly, We cannot parse currently user's login token correctly."));
                }
                if (token.LoginType == LoginTypes.WebSiteLogin)
                {
                    adGroup.PricePolicy.DevPrice = decimal.Parse(dt.Rows[0]["AcBidPrice"].ToString());
                }

                #endregion


                if (decimal.Parse(dt.Rows[0]["AcBidPrice"].ToString()) != adGroup.PricePolicy.DevPrice)
                {
                    if (!user.IsAdministrator || accountTypes == AccountTypes.MediaAccount)
                    {
                        return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot update AcBidPrice field value when you were under the Administrator permission!!!"));
                    }
                }


                #region Details Validation.

                uint   dbAdContentId = (uint)(int)dt.Rows[0]["AdContentID"];
                string dbITunesApId  = Convert.IsDBNull(dt.Rows[0]["ITunesAppID"]) ? null : dt.Rows[0]["ITunesAppID"].ToString();
                if (adGroup.ActionType != 0)
                {
                    if (dbAdContentId < 2 || (dbAdContentId == 5 && adGroup.ITunesAppId != null))
                    {
                        return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot pass details validation."));
                    }
                    if (adGroup.ContentType.AdContentId != 7 && adGroup.ContentType.AdContentId != 8)
                    {
                        //AdContentID = 2,DeviceCategory的范围在2,3,4,5,6,7之内
                        //AdContentID = 3,DeviceCategory的范围在2,4,5,7之内
                        //AdContentID = 4,DeviceCategory的范围在3,6之内
                        //AdContentID = 5,DeviceCategory只能是8
                        string[] reqMsgDeviceCategory = adGroup.DeviceCategory.Split(',');
                        if (reqMsgDeviceCategory.Any(t => MidiatorGlobal.DeviceCategory[dbAdContentId.ToString()].Contains(t) == false))
                        {
                            return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot pass details validation."));
                        }
                        //AdContentID等于5的时候,ITunesAppID不能传值
                        if (dbAdContentId == 5 && !string.IsNullOrEmpty(adGroup.ITunesAppId.ToString()))
                        {
                            return(ExecuteResult.Fail(SystemErrors.BusinessObjIsNotSupported, "#Cannot pass details validation."));
                        }
                    }
                }
                #endregion

                //修改一条AdGroup的信息
                _masterDB.SpExecuteTable(SpName.SpUpdateAdGroup, ParametersObject.UpdateAdGroup, new object[]
                {
                    dt.Rows[0]["GroupID"]
                    , dt.Rows[0]["CampaignID"]
                    , dt.Rows[0]["AccountID"]
                    , dt.Rows[0]["MediaTypeID"]      //cannot update
                    , adGroup.Name
                    , Math.Round(adGroup.BidPrice, 2)
                    , adGroup.PricePolicy.DevPrice                                                                //dt.Rows[0]["AcBidPrice"]
                    , adGroup.Status
                    , dt.Rows[0]["DeliveryMode"]                                                                  //adGroup.DeliveryMode
                    , dt.Rows[0]["Weight"]                                                                        //adGroup.Weight
                    , dt.Rows[0]["AdActionID"]                                                                    //cannot update
                    , dt.Rows[0]["AdContentID"]                                                                   //cannot update
                    , adGroup.Targetings.TimeTargeting                                                            //dt.Rows[0]["WeekTimePeriodIDs"]
                    , Convert.IsDBNull(dt.Rows[0]["ThirdPartPlatformID"]) ? 0 : dt.Rows[0]["ThirdPartPlatformID"] //adGroup.ThirdpartyPlatformId
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksEveryDayByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsEveryDayByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksSevenDaysByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsSevenDaysByDevice
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksEveryDay
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsEveryDay
                    , adGroup.Targetings.FrequencyTargeting.MaxClicksPutIn
                    , adGroup.Targetings.FrequencyTargeting.MaxImpressionsPutIn
                    , adGroup.ITunesAppId
                    , userId
                    , adGroup.DeviceCategory
                    , adGroup.NetworkTypes
                    , adGroup.Targetings.DeviceTargeting.GetCatagoryString()
                    , adGroup.Targetings.DeviceTargeting.GetSDKString()
                    , adGroup.Targetings.DeviceTargeting.GetOSString()
                    , adGroup.Targetings.DeviceTargeting.GetOpString()
                    , adGroup.Targetings.DeviceTargeting.GetAppString()
                    , adGroup.ITunesAppCategoryId
                    , adGroup.CPAPrice
                    , adGroup.MaxImpressions
                    , adGroup.MaxClicks
                    , adGroup.MaxPerUserImpressions
                    , adGroup.PublishId
                    , adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Forward) == null ? null : adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Forward).Concat()
                    , adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Backward) == null ? null : adGroup.Targetings.TagTargeting.GetData(UserTagDirectionTypes.Backward).Concat()
                    , adGroup.ITunesBundleId
                    , dt.Rows[0]["DisplayType"]      //cannot update
                });
                return(ExecuteResult.Succeed(true));
            }
            catch (Exception ex)
            {
                _tracing.Error(ex, null);
                return(ExecuteResult.Fail(SystemErrors.Unknown, ex.Message));
            }
        }