/// <summary>
        /// Actualiza los registros del grid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 27/05/2016
        /// </history>
        private void btnRef_Click(object sender, RoutedEventArgs e)
        {
            status.Visibility = Visibility.Visible;
            ScoreRuleByLeadSource scoreRuleByLeadSource = (ScoreRuleByLeadSource)dgrScoreRulesByLS.SelectedItem;

            LoadScoreRulesByLS();
        }
Beispiel #2
0
        /// <summary>
        /// Agrega|Actualiza un ScoreRuleByLeadSource
        /// </summary>
        /// <history>
        /// [emoguel] created 27/05/2016
        /// </history>
        private async void btnAccept_Click(object sender, RoutedEventArgs e)
        {
            btnAccept.Focus();
            List <ScoreRuleByLeadSourceDetail> lstScoreRuleDetails = (List <ScoreRuleByLeadSourceDetail>)dgrScores.ItemsSource;

            if (enumMode != EnumMode.Add && ObjectHelper.IsEquals(scoreRuleByLeadSource, oldScoreRuleByLeadSource) && !hasChageScores())
            {
                _isClosing = true;
                Close();
            }
            else
            {
                skpStatus.Visibility = Visibility.Visible;
                txtStatus.Text       = "Saving Data...";
                btnAccept.Visibility = Visibility.Collapsed;
                string strMsj = ValidateHelper.ValidateForm(this, "Score Rule", blnDatagrids: true);
                if (strMsj == "")
                {
                    List <ScoreRuleByLeadSourceDetail> lstScoreDetail = (List <ScoreRuleByLeadSourceDetail>)dgrScores.ItemsSource;
                    #region Listas
                    var lstAdd = lstScoreDetail.Where(sj =>
                                                      !_lstScoreRulesDet.Any(sjj =>
                                                                             sj.sjsp == sjj.sjsp && sj.sjls == sjj.sjls
                                                                             )).ToList();

                    var lstDel = _lstScoreRulesDet.Where(sj =>
                                                         !lstScoreDetail.Any(sjj =>
                                                                             sj.sjsp == sjj.sjsp && sj.sjls == sjj.sjls
                                                                             )).ToList();

                    var lstUpd = _lstScoreRulesDet.Where(sj =>
                                                         lstScoreDetail.Any(sjj =>
                                                                            sj.sjsp == sjj.sjsp && sj.sjls == sjj.sjls
                                                                            )).ToList();
                    #endregion

                    int nRes = await BRScoreRulesByLeadSource.SaveScoreRuleByLeadSource(scoreRuleByLeadSource, lstAdd, lstDel, lstUpd, (enumMode == EnumMode.Edit));// await BRProducts.SaveProduct(product, (enumMode == EnumMode.edit), _productLegend, lstAdd, lstDel);

                    UIHelper.ShowMessageResult("Score Rule By Lead Source", nRes);
                    if (nRes > 0)
                    {
                        if (enumMode == EnumMode.Add)
                        {
                            var lstNewItem = await BRScoreRulesByLeadSource.GetScoreRuleByLeadSource(scoreRuleByLeadSource.sbls);

                            scoreRuleByLeadSource = lstNewItem.FirstOrDefault();
                        }
                        _isClosing   = true;
                        DialogResult = true;
                        Close();
                    }
                }
                else
                {
                    UIHelper.ShowMessage(strMsj);
                }
                skpStatus.Visibility = Visibility.Collapsed;
                btnAccept.Visibility = Visibility.Visible;
            }
        }
        /// <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)
        {
            ScoreRuleByLeadSource          scoreRuleByLeadSource = (ScoreRuleByLeadSource)dgrScoreRulesByLS.SelectedItem;
            frmScoreRuleByLeadSourceDetail frmScoreRuleByLS      = new frmScoreRuleByLeadSourceDetail();

            frmScoreRuleByLS.Owner    = this;
            frmScoreRuleByLS.enumMode = EnumMode.Edit;
            frmScoreRuleByLS.oldScoreRuleByLeadSource = scoreRuleByLeadSource;
            frmScoreRuleByLS.ShowDialog();
        }
        /// <summary>
        /// Llena el grid de ScoreRuleByLeadSources
        /// </summary>
        /// <param name="scoreRuleByLS">Objeto a seleccionar</param>
        /// <history>
        /// [emoguel] created 27/05/2016
        /// </history>
        private async void LoadScoreRulesByLS(ScoreRuleByLeadSource scoreRuleByLS = null)
        {
            List <ScoreRuleByLeadSource> lstScoreRulesByLS = await BRScoreRulesByLeadSource.GetScoreRuleByLeadSource();

            int nIndex = 0;

            dgrScoreRulesByLS.ItemsSource = lstScoreRulesByLS;
            if (lstScoreRulesByLS.Count > 0 && scoreRuleByLS != null)
            {
                scoreRuleByLS = lstScoreRulesByLS.Where(sb => sb.sbls == scoreRuleByLS.sbls).FirstOrDefault();
                nIndex        = lstScoreRulesByLS.IndexOf(scoreRuleByLS);
            }
            GridHelper.SelectRow(dgrScoreRulesByLS, nIndex);
            StatusBarReg.Content = lstScoreRulesByLS.Count + " Score Rules.";
            status.Visibility    = Visibility.Collapsed;
        }
        /// <summary>
        /// Agrega un scoreRuleByLeadSource
        /// Agrega|Elimina details
        /// </summary>
        /// <param name="score">Objeto a guradar</param>
        /// <param name="lstAdd">Detalles a agregar</param>
        /// <param name="lstDel">Detalles a eliminar</param>
        /// <param name="lstUpd">Detalles a actualizar</param>
        /// <param name="blnUpdate">False. inserta un nuevo score Rule</param>
        /// <returns>-1. Existe un Rule con el mismo ID | 0. No se pudó guardar | >0. Se guardó correctamente</returns>
        /// <history>
        /// [emoguel] created 30/05/2016
        /// </history>
        public static async Task <int> SaveScoreRuleByLeadSource(ScoreRuleByLeadSource score, List <ScoreRuleByLeadSourceDetail> lstAdd, List <ScoreRuleByLeadSourceDetail> lstDel,
                                                                 List <ScoreRuleByLeadSourceDetail> lstUpd, bool blnUpdate)
        {
            int nRes = 0;

            nRes = await Task.Run(() => {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    using (var transacction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        try
                        {
                            #region Update
                            if (!blnUpdate)
                            {
                                if (dbContext.ScoreRulesByLeadSources.Where(sb => sb.sbls == score.sbls).FirstOrDefault() != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    dbContext.ScoreRulesByLeadSources.Add(score);
                                }
                            }
                            #endregion

                            #region ScoreRulesDetail
                            //Add
                            lstAdd.ForEach(sj =>
                            {
                                sj.sjls = score.sbls;
                                dbContext.ScoreRulesByLeadSourceDetails.Add(sj);
                            });

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

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

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

            return(nRes);
        }