public ActionResult Create(ScoreRule scoreRule) { //_scoreRuleContract.ScoreRules.Where(c => c.IsEnabled).ForEach(c => c.IsEnabled = false); var res = _scoreRuleContract.Insert(scoreRule); return(Json(res)); }
/// <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); }
/// <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(); }
/// <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 } }
/// <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; }
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); }
/// <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); }
/// <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); }