Esempio n. 1
0
        public ActionResult Create(ScoreRule scoreRule)
        {
            //_scoreRuleContract.ScoreRules.Where(c => c.IsEnabled).ForEach(c => c.IsEnabled = false);
            var res = _scoreRuleContract.Insert(scoreRule);

            return(Json(res));
        }
Esempio n. 2
0
        /// <summary>
        /// Verifica que un score rule cumpla con los filtros actuales
        /// </summary>
        /// <param name="scoreRule"></param>
        /// <returns>True. Si cumple | False. No cumple</returns>
        /// <history>
        /// [emoguel] created 27/05/2016
        /// </history>
        private bool ValidateFilter(ScoreRule scoreRule)
        {
            if (_nStatus != -1)//Filtro por Estatus
            {
                if (scoreRule.suA != Convert.ToBoolean(_nStatus))
                {
                    return(false);
                }
            }

            if (_scoreRuleFilter.suID > 0)//Filtro por ID
            {
                if (scoreRule.suID != _scoreRuleFilter.suID)
                {
                    return(false);
                }
            }

            if (!string.IsNullOrWhiteSpace(_scoreRuleFilter.suN))//Filtro por descripción
            {
                if (!scoreRule.suN.Contains(_scoreRuleFilter.suN, StringComparison.OrdinalIgnoreCase))
                {
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// Racarga los registros del grid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 26/05/2016
        /// </history>
        private void btnRef_Click(object sender, RoutedEventArgs e)
        {
            status.Visibility = Visibility.Visible;
            ScoreRule scoreRule = (ScoreRule)dgrScoreRules.SelectedItem;

            LoadScoreRules();
        }
Esempio n. 4
0
        /// <summary>
        /// Abre la ventana detalle en modo "detalle" o "edición" dependiendo de sus permisos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 25/05/2016
        /// </history>
        private void Cell_DoubleClick(object sender, RoutedEventArgs e)
        {
            ScoreRule          scoreRule          = (ScoreRule)dgrScoreRules.SelectedItem;
            frmScoreRuleDetail frmScoreRuleDetail = new frmScoreRuleDetail();

            frmScoreRuleDetail.Owner        = this;
            frmScoreRuleDetail.enumMode     = EnumMode.Edit;
            frmScoreRuleDetail.oldScoreRule = scoreRule;
            if (frmScoreRuleDetail.ShowDialog() == true)
            {
                int nIndex = 0;
                List <ScoreRule> lstScoreRules = (List <ScoreRule>)dgrScoreRules.ItemsSource;
                if (ValidateFilter(frmScoreRuleDetail.scoreRule))                         //Verificamos si cumple con los filtros
                {
                    ObjectHelper.CopyProperties(scoreRule, frmScoreRuleDetail.scoreRule); //Actualizamos el registro
                    lstScoreRules.Sort((x, y) => string.Compare(x.suN, y.suN));           //Reordenamos la lista
                    nIndex = lstScoreRules.IndexOf(scoreRule);                            //BUscamos la posición del index
                }
                else
                {
                    lstScoreRules.Remove(scoreRule);                          //Quitamos el registro
                }
                dgrScoreRules.Items.Refresh();                                //Actualizamos la vista
                GridHelper.SelectRow(dgrScoreRules, nIndex);                  //Seleccionamos el registro
                StatusBarReg.Content = lstScoreRules.Count + " Score Rules."; //Actualizamos el contador
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Llena el grid de SocreRules
        /// </summary>
        /// <param name="scoreRule">Objeto a seleccionar</param>
        /// <history>
        /// [emoguel] created 26/05/2016
        /// </history>
        private async void LoadScoreRules(ScoreRule scoreRule = null)
        {
            int nIndex = 0;
            List <ScoreRule> lstScoreRules = await BRScoreRules.GetScoreRules(_nStatus, _scoreRuleFilter);

            dgrScoreRules.ItemsSource = lstScoreRules;
            if (lstScoreRules.Count > 0 && scoreRule != null)
            {
                scoreRule = lstScoreRules.Where(su => su.suID == scoreRule.suID).FirstOrDefault();
                nIndex    = lstScoreRules.IndexOf(scoreRule);
            }
            GridHelper.SelectRow(dgrScoreRules, nIndex);
            StatusBarReg.Content = lstScoreRules.Count + " Score Rules.";
            status.Visibility    = Visibility.Collapsed;
        }
Esempio n. 6
0
        public float GetScore(ConsumeInfo consumeInfo, Retail retail, ScoreRule scoreRule)
        {
            if (scoreRule == null || scoreRule.ConsumeUnit <= 0 || scoreRule.ScoreUnit <= 0)
            {
                return(0);
            }
            var payMoney = consumeInfo.ConsumeCoun - GetNoMoney(consumeInfo, retail);

            // 消费/积分比例
            float unitConsu = scoreRule.ConsumeUnit;
            float unitScore = scoreRule.ScoreUnit;
            var   score     = (float)Math.Round(payMoney) / unitConsu * unitScore;

            return(score);
        }
Esempio n. 7
0
        /// <summary>
        /// Obtiene registros de Score
        /// </summary>
        /// <param name="nStatus">Estaus de los registros</param>
        /// <param name="scoreRule">Objeto con filtros adicionales</param>
        /// <returns>Lista de tipo Score RUle</returns>
        /// <history>
        /// [emoguel] created 26/05/2016
        /// </history>
        public static async Task <List <ScoreRule> > GetScoreRules(int nStatus = -1, ScoreRule scoreRule = null)
        {
            List <ScoreRule> lstScoreRule = new List <ScoreRule>();

            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    var query = from su in dbContext.ScoreRules
                                select su;

                    if (nStatus != -1)//Filtro por estatus
                    {
                        bool blnStatus = Convert.ToBoolean(nStatus);
                        query          = query.Where(su => su.suA == blnStatus);
                    }

                    if (scoreRule != null)
                    {
                        if (scoreRule.suID > 0)//Filtro por ID
                        {
                            query = query.Where(su => su.suID == scoreRule.suID);
                        }

                        if (!string.IsNullOrWhiteSpace(scoreRule.suN))//Filtro por descripción
                        {
                            query = query.Where(su => su.suN.Contains(scoreRule.suN));
                        }
                    }

                    lstScoreRule = query.OrderBy(su => su.suN).ToList();
                }
            });

            return(lstScoreRule);
        }
Esempio n. 8
0
        /// <summary>
        /// Agrega|Actualiza un registro de ScoreRule
        /// </summary>
        /// <param name="score">Objeto a guardar</param>
        /// <param name="lstAdd">ScoreRuleDetail a agregar</param>
        /// <param name="lstDel">ScoreRuleDetail a eliminar</param>
        /// <param name="lstUpd">ScoreRuleDetail a actualizar</param>
        /// <param name="blnUpdate">True. Agrega | False. Actualiza</param>
        /// <returns>-1. Existe un registro con el mismo ID | 0. No se guardó | >0 Se guardó correctamente</returns>
        /// <history>
        /// [emoguel] created 27/05/2016
        /// </history>
        public static async Task <int> SaveScore(ScoreRule score, List <ScoreRuleDetail> lstAdd, List <ScoreRuleDetail> lstDel, List <ScoreRuleDetail> lstUpd, bool blnUpdate)
        {
            int nRes = 0;

            nRes = await Task.Run(() => {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transaccion = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region Actualizar
                            if (blnUpdate)
                            {
                                dbContext.Entry(score).State = System.Data.Entity.EntityState.Modified;
                            }
                            #endregion
                            #region Insertar
                            else
                            {
                                if (dbContext.ScoreRules.Where(su => su.suID == score.suID).FirstOrDefault() != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.ScoreRules.Add(score);
                                }
                            }
                            #endregion

                            #region ScoreRulesDetail
                            //Add
                            lstAdd.ForEach(si =>
                            {
                                si.sisu = score.suID;
                                dbContext.ScoreRulesDetails.Add(si);
                            });

                            //Upd
                            lstUpd.ForEach(si =>
                            {
                                dbContext.Entry(si).State = System.Data.Entity.EntityState.Modified;
                            });

                            //del
                            lstDel.ForEach(si => {
                                dbContext.Entry(si).State = System.Data.Entity.EntityState.Deleted;
                            });
                            #endregion

                            int nSave = dbContext.SaveChanges();
                            transaccion.Commit();
                            return(nSave);
                        }
                        catch
                        {
                            transaccion.Rollback();
                            return(0);
                        }
                    }
                }
            });

            return(nRes);
        }