public static bool Insert(Common.GroupPrice groupPrice, string agentRatio)
        {
            Business.GroupPrice groupPriceController = new Business.GroupPrice();
            try
            {
                XDocument doc           = new XDocument();
                XElement  root          = new XElement("NewDataSet");
                int       countOperator = Helper.GetInt(Helper.ImportData(agentRatio, "resultCount"));

                for (int counterOpearor = 0; counterOpearor < countOperator; counterOpearor++)
                {
                    XElement element = new XElement("Table");
                    element.Add(new XElement("AgentID", Helper.ImportData(agentRatio, ("AgentID" + counterOpearor))));
                    element.Add(new XElement("Ratio", Helper.ImportDecimalData(agentRatio, ("NewRatio" + counterOpearor))));
                    root.Add(element);
                }
                doc.Add(root);

                groupPrice.AgentRatio = doc.ToString();
                return(groupPriceController.Insert(groupPrice) != Guid.Empty ? true : false);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static void CompareAgentRatio(decimal basePrice, bool decreaseTax, string enterAgentRatio, Guid parentGuid)
        {
            try
            {
                decimal           userRatio;
                Guid              parentGroupGuid  = User.GetGroupPriceGuid(parentGuid);
                Common.GroupPrice parentGroupPrice = LoadGroupPrice(parentGroupGuid);
                if (basePrice < parentGroupPrice.BasePrice)
                {
                    throw new Exception(Language.GetString("BaseGroupPriceIsLow"));
                }

                Dictionary <Guid, decimal> parentAgentRatio = GetAgentRatio(parentGroupPrice.AgentRatio, true);
                Dictionary <Guid, decimal> userAgentRatio   = GetAgentRatio(enterAgentRatio, false);

                foreach (KeyValuePair <Guid, decimal> parentRatio in parentAgentRatio)
                {
                    userRatio = userAgentRatio.Keys.Contains(parentRatio.Key) ? userAgentRatio[parentRatio.Key] : 1;

                    if (userRatio < Helper.GetDecimal(parentRatio.Value, 1))
                    {
                        throw new Exception(Language.GetString("RatioNotValid"));
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public static Common.GroupPrice LoadGroupPrice(Guid groupPriceGuid)
 {
     Business.GroupPrice groupPriceController = new Business.GroupPrice();
     Common.GroupPrice   groupPrice           = new Common.GroupPrice();
     groupPriceController.Load(groupPriceGuid, groupPrice);
     return(groupPrice);
 }
Exemple #4
0
        public DataTable gridAgentRatio_OnDataBind(string sortField, string searchFiletrs, string toolbarFilters, string userData, int pageNo, int pageSize, ref int resultCount, ref string customData)
        {
            string  agentGuid  = string.Empty;
            string  agentTitle = string.Empty;
            decimal ratio;

            List <DataRow> lstAgents = Facade.SmsSenderAgent.GetUserAgents(Facade.SmsSenderAgent.GetFirstParentMainAdmin(UserGuid)).AsEnumerable().ToList();

            DataTable dtAgentRatio = new DataTable();

            dtAgentRatio.Columns.Add("Guid", typeof(Guid));
            dtAgentRatio.Columns.Add("Price", typeof(string));
            dtAgentRatio.Columns.Add("AgentID", typeof(string));
            dtAgentRatio.Columns.Add("Agent", typeof(string));
            dtAgentRatio.Columns.Add("Ratio", typeof(decimal));

            Common.User       user       = Facade.User.LoadUser(UserGuid);
            Common.GroupPrice groupPrice = Facade.GroupPrice.LoadGroupPrice(user.PriceGroupGuid);
            string            price      = Helper.FormatDecimalForDisplay(groupPrice.BasePrice);

            var             xelement           = XElement.Parse(groupPrice.AgentRatio);
            List <XElement> lstOperatorElement = xelement.Elements("Table").ToList();

            foreach (var item in lstOperatorElement)
            {
                agentGuid  = item.Element("AgentID").Value;
                agentTitle = lstAgents.Where(agent => Helper.GetGuid(agent["Guid"]) == Helper.GetGuid(agentGuid)).First()["Name"].ToString();
                ratio      = Helper.GetDecimal(item.Element("Ratio").Value);

                dtAgentRatio.Rows.Add(Guid.NewGuid(), price, agentGuid, agentTitle, ratio);
            }
            return(dtAgentRatio);
        }
        public DataTable gridAgentRatio_OnDataBind(string sortField, string searchFiletrs, string toolbarFilters, string userData, int pageNo, int pageSize, ref int resultCount, ref string customData)
        {
            string   agentGuid  = string.Empty;
            string   agentTitle = string.Empty;
            decimal  currentUserRatio;
            decimal  groupRatio;
            XElement groupPriceRatioElement;

            firstParentMainAdmin = Facade.SmsSenderAgent.GetFirstParentMainAdmin(UserGuid);
            List <DataRow> lstAgents = Facade.SmsSenderAgent.GetUserAgents(firstParentMainAdmin).AsEnumerable().ToList();

            DataTable dtAgentRatio = new DataTable();

            dtAgentRatio.Columns.Add("Guid", typeof(Guid));
            dtAgentRatio.Columns.Add("AgentID", typeof(string));
            dtAgentRatio.Columns.Add("Agent", typeof(string));
            dtAgentRatio.Columns.Add("CurrentRatio", typeof(decimal));
            dtAgentRatio.Columns.Add("NewRatio", typeof(decimal));

            Common.GroupPrice userGroupPrice = Facade.GroupPrice.LoadGroupPrice(Facade.User.GetGroupPriceGuid(UserGuid));
            var             xelement         = XElement.Parse(userGroupPrice.AgentRatio);
            List <XElement> lstUserRatio     = xelement.Elements("Table").ToList();

            foreach (var item in lstAgents)
            {
                agentGuid        = Helper.GetGuid(item["Guid"]).ToString();
                agentTitle       = item["Name"].ToString();
                currentUserRatio = 1;
                groupRatio       = 1;

                groupPriceRatioElement = lstUserRatio.Where(agent => Helper.GetGuid(agent.Element("AgentID").Value) == Helper.GetGuid(agentGuid)).FirstOrDefault();
                if (groupPriceRatioElement != null)
                {
                    currentUserRatio = Helper.GetDecimal(groupPriceRatioElement.Element("Ratio").Value, 1);
                    groupRatio       = currentUserRatio;
                }

                if (ActionType == "edit")
                {
                    Common.GroupPrice groupPrice = Facade.GroupPrice.LoadGroupPrice(GroupPriceGuid);
                    xelement = XElement.Parse(groupPrice.AgentRatio);
                    List <XElement> lstOperatorElement = xelement.Elements("Table").ToList();

                    groupPriceRatioElement = lstOperatorElement.Where(agent => Helper.GetGuid(agent.Element("AgentID").Value) == Helper.GetGuid(agentGuid)).FirstOrDefault();
                    if (groupPriceRatioElement != null)
                    {
                        groupRatio = Helper.GetDecimal(groupPriceRatioElement.Element("Ratio").Value, 1);
                    }
                }
                dtAgentRatio.Rows.Add(Guid.NewGuid(), agentGuid, agentTitle, currentUserRatio, groupRatio);
            }

            return(dtAgentRatio);
        }
Exemple #6
0
 public bool UpdateGroupPrice(Common.GroupPrice groupPrice)
 {
     return(base.ExecuteSPCommand("UpdateGroupPrice",
                                  "@Guid", groupPrice.GroupPriceGuid,
                                  "@Title", groupPrice.Title,
                                  "@MinimumMessage", groupPrice.MinimumMessage,
                                  "@MaximumMessage", groupPrice.MaximumMessage,
                                  "@BasePrice", groupPrice.BasePrice,
                                  "@DecreaseTax", groupPrice.DecreaseTax,
                                  "@AgentRatio", groupPrice.AgentRatio,
                                  "@IsPrivate", groupPrice.IsPrivate,
                                  "@IsDefault", groupPrice.IsDefault));
 }
        private void InitializePage()
        {
            btnSave.Text = Language.GetString(btnSave.Text);
            btnSave.Attributes["onclick"] = "return validateGroupPrice();";

            if (ActionType == "edit")
            {
                Common.GroupPrice groupPrice = Facade.GroupPrice.LoadGroupPrice(GroupPriceGuid);
                chbIsPrivate.Checked         = groupPrice.IsPrivate;
                chbIsPrivate.Enabled         = groupPrice.IsPrivate ? false : true;
                chbDefaultGroupPrice.Checked = groupPrice.IsDefault;
                chbDecreaseTax.Checked       = groupPrice.DecreaseTax;
                chbIsPrivate.Checked         = groupPrice.IsPrivate;
                txtTitle.Text          = groupPrice.Title;
                txtMinimumMessage.Text = Helper.FormatDecimalForDisplay(groupPrice.MinimumMessage);
                txtMaximumMessage.Text = Helper.FormatDecimalForDisplay(groupPrice.MaximumMessage);
                txtBasePrice.Text      = Helper.FormatDecimalForDisplay(groupPrice.BasePrice);
            }
        }
        public static Dictionary <Guid, decimal> GetAgentRatio(Guid UserGuid)
        {
            Dictionary <Guid, decimal> agentRatio = new Dictionary <Guid, decimal>();

            Common.User       user       = User.LoadUser(UserGuid);
            Common.GroupPrice groupPrice = GroupPrice.LoadGroupPrice(user.PriceGroupGuid);

            if (groupPrice.AgentRatio != string.Empty)
            {
                var             xelement        = XElement.Parse(groupPrice.AgentRatio);
                List <XElement> lstAgentElement = xelement.Elements("Table").ToList();

                foreach (var item in lstAgentElement)
                {
                    agentRatio.Add(Helper.GetGuid(item.Element("AgentID").Value), Helper.GetDecimal(item.Element("Ratio").Value));
                }
            }
            return(agentRatio);
        }
        public static bool UpdateGroupPrice(Common.GroupPrice groupPrice, string agentRatio, bool isMainAdmin)
        {
            Business.GroupPrice groupPriceController = new Business.GroupPrice();
            decimal             currentRatio;
            decimal             newRatio;

            try
            {
                XDocument doc = new XDocument();
                XElement  element;
                XElement  root          = new XElement("NewDataSet");
                int       countOperator = Helper.GetInt(Helper.ImportData(agentRatio, "resultCount"));

                for (int counter = 0; counter < countOperator; counter++)
                {
                    element = new XElement("Table");
                    element.Add(new XElement("AgentID", Helper.ImportData(agentRatio, ("AgentID" + counter))));
                    currentRatio = Helper.ImportDecimalData(agentRatio, ("CurrentRatio" + counter));
                    newRatio     = Helper.ImportDecimalData(agentRatio, ("NewRatio" + counter));
                    if (newRatio < currentRatio && !isMainAdmin)
                    {
                        throw new Exception(Language.GetString("RatioNotValid"));
                    }

                    element.Add(new XElement("Ratio", Helper.ImportDecimalData(agentRatio, ("NewRatio" + counter))));
                    root.Add(element);
                }
                doc.Add(root);

                groupPrice.AgentRatio = doc.ToString();
                return(groupPriceController.UpdateGroupPrice(groupPrice));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            Common.GroupPrice groupPrice = new Common.GroupPrice();
            string            agentRatio = string.Empty;

            try
            {
                groupPrice.Title          = txtTitle.Text;
                groupPrice.IsPrivate      = chbIsPrivate.Checked;
                groupPrice.IsDefault      = groupPrice.IsPrivate ? false : chbDefaultGroupPrice.Checked;
                groupPrice.MinimumMessage = groupPrice.IsPrivate ? 0 : Helper.GetLong(txtMinimumMessage.Text);
                groupPrice.MaximumMessage = groupPrice.IsPrivate ? 0 : Helper.GetLong(txtMaximumMessage.Text);
                groupPrice.GroupPriceGuid = GroupPriceGuid;
                groupPrice.BasePrice      = Helper.GetDecimal(txtBasePrice.Text);
                groupPrice.DecreaseTax    = chbDecreaseTax.Checked;
                groupPrice.AgentRatio     = string.Empty;
                groupPrice.UserGuid       = UserGuid;
                groupPrice.CreateDate     = DateTime.Now;

                if (!Helper.CheckDataConditions(hdnAgentRatio.Value).IsEmpty)
                {
                    agentRatio = hdnAgentRatio.Value;
                }

                if (!IsMainAdmin)
                {
                    Facade.GroupPrice.CompareAgentRatio(groupPrice.BasePrice, chbDecreaseTax.Checked, agentRatio, ParentGuid);
                }

                switch (ActionType)
                {
                case "edit":
                    if (groupPrice.HasError)
                    {
                        throw new Exception(groupPrice.ErrorMessage);
                    }

                    if (!groupPrice.IsPrivate)
                    {
                        if (groupPrice.MinimumMessage >= groupPrice.MaximumMessage)
                        {
                            throw new Exception(Language.GetString("InvalidRange"));
                        }

                        if (!Facade.GroupPrice.CheckExistRange(UserGuid, GroupPriceGuid, groupPrice.MinimumMessage, groupPrice.MaximumMessage))
                        {
                            throw new Exception(Language.GetString("DuplicateRangeOfGroupPrice"));
                        }
                    }
                    if (!Facade.GroupPrice.UpdateGroupPrice(groupPrice, agentRatio, IsMainAdmin))
                    {
                        throw new Exception(Language.GetString("ErrorRecord"));
                    }

                    break;

                case "insert":
                    if (groupPrice.HasError)
                    {
                        throw new Exception(groupPrice.ErrorMessage);
                    }

                    if (!groupPrice.IsPrivate)
                    {
                        if (groupPrice.MinimumMessage >= groupPrice.MaximumMessage)
                        {
                            throw new Exception(Language.GetString("InvalidRange"));
                        }

                        if (!Facade.GroupPrice.CheckExistRange(UserGuid, Guid.Empty, groupPrice.MinimumMessage, groupPrice.MaximumMessage))
                        {
                            throw new Exception(Language.GetString("DuplicateRangeOfGroupPrice"));
                        }
                    }

                    if (!Facade.GroupPrice.Insert(groupPrice, agentRatio))
                    {
                        throw new Exception(Language.GetString("ErrorRecord"));
                    }
                    break;
                }

                Response.Redirect(string.Format("/PageLoader.aspx?c={0}", Helper.Encrypt((int)Arad.SMS.Gateway.Business.UserControls.UI_GroupPrices_GroupPrice, Session)));
            }
            catch (Exception ex)
            {
                ShowMessageBox(ex.Message, string.Empty, "danger");
            }
        }