/// <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 02/06/2016
        /// </history>
        private void Cell_DoubleClick(object sender, RoutedEventArgs e)
        {
            SegmentCategory          segmentCategory       = (SegmentCategory)dgrSegmentsCategories.SelectedItem;
            frmSegmentCategoryDetail frmSegmentCategoryDet = new frmSegmentCategoryDetail();

            frmSegmentCategoryDet.Owner = this;
            frmSegmentCategoryDet.oldSegmentCategory = segmentCategory;
            frmSegmentCategoryDet.enumMode           = (_blnEdit) ? EnumMode.Edit : EnumMode.ReadOnly;
            if (frmSegmentCategoryDet.ShowDialog() == true)
            {
                List <SegmentCategory> lstSegmentsCategories = (List <SegmentCategory>)dgrSegmentsCategories.ItemsSource;
                int nIndex = 0;
                if (ValidateFilter(frmSegmentCategoryDet.segmentCategory))                               //verificamos que cumpla con los filtros
                {
                    ObjectHelper.CopyProperties(segmentCategory, frmSegmentCategoryDet.segmentCategory); //Actualizamos los datos
                    lstSegmentsCategories.Sort((x, y) => string.Compare(x.scN, y.scN));                  //Ordenamos la lista
                    nIndex = lstSegmentsCategories.IndexOf(frmSegmentCategoryDet.segmentCategory);       //Buscamos la posición del regsitro
                }
                else
                {
                    lstSegmentsCategories.Remove(frmSegmentCategoryDet.segmentCategory);     //Quitamos el registro
                }
                dgrSegmentsCategories.Items.Refresh();                                       //Actualizamos la vista
                GridHelper.SelectRow(dgrSegmentsCategories, nIndex);                         //Seleccionamos el registro
                StatusBarReg.Content = lstSegmentsCategories.Count + " Segments Categories"; //Actualizamos el contador
            }
        }
        /// <summary>
        /// Valida que un segmentCategory cumpla con los filtros actuales
        /// </summary>
        /// <param name="segmentCategory">Objeto a seleccionar</param>
        /// <returns>True. Si cumple | False. No cumple</returns>
        /// <history>
        /// [emoguel] created 02/06/2016
        /// </history>
        private bool ValidateFilter(SegmentCategory segmentCategory)
        {
            if (_nStatus != -1)//filtro por estatus
            {
                if (segmentCategory.scA != Convert.ToBoolean(_nStatus))
                {
                    return(false);
                }
            }

            if (!string.IsNullOrWhiteSpace(_segmentCategoryFilter.scID))//Filtro por ID
            {
                if (_segmentCategoryFilter.scID != segmentCategory.scID)
                {
                    return(false);
                }
            }

            if (!string.IsNullOrWhiteSpace(_segmentCategoryFilter.scN))//Filtro por descripción
            {
                if (!segmentCategory.scN.Contains(_segmentCategoryFilter.scN, StringComparison.OrdinalIgnoreCase))
                {
                    return(false);
                }
            }
            return(true);
        }
Example #3
0
        /// <summary>
        /// Guarda los cambios
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 31/05/2016
        /// </history>
        private async void btnSave_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                status.Visibility = Visibility.Visible;
                txtStatus.Text    = "Saving Data...";
                List <SegmentCategory> lstSegmentCategories = (List <SegmentCategory>)dgrSegmentsCategories.ItemsSource;
                if (ValidateChanges(lstSegmentCategories))
                {
                    int nRes = await BRSegmentsCategories.ChangeSegmentsCategoryOrder(lstSegmentCategories);

                    UIHelper.ShowMessageResult("Segments Categories Order", nRes);
                    if (nRes > 0)
                    {
                        _lstSegmentscategory = new List <SegmentCategory>();
                        lstSegmentCategories.ForEach(sc => {
                            SegmentCategory segmenteCateg = new SegmentCategory();
                            ObjectHelper.CopyProperties(segmenteCateg, sc);
                            _lstSegmentscategory.Add(segmenteCateg);
                        });
                    }
                }
                btnEdit.IsEnabled   = true;
                btnCancel.IsEnabled = false;
                SetEditMode(false);
                status.Visibility = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
Example #4
0
 /// <summary>
 /// Cambia de orden el registro
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 /// <history>
 /// [emoguel] created 03/06/2016
 /// </history>
 private void btnDown_Click(object sender, RoutedEventArgs e)
 {
     if (dgrSegmentsCategories.SelectedIndex != dgrSegmentsCategories.Items.Count)
     {
         List <SegmentCategory> lstItems = (List <SegmentCategory>)dgrSegmentsCategories.ItemsSource;
         SegmentCategory        itemUp   = lstItems[dgrSegmentsCategories.SelectedIndex];
         SegmentCategory        itemDown = lstItems[dgrSegmentsCategories.SelectedIndex + 1];
         int value = Convert.ToInt32(itemDown.scO);
         itemUp.scO   = value;
         itemDown.scO = value - 1;
         lstItems.Sort((x, y) => x.scO.CompareTo(y.scO));
         dgrSegmentsCategories.Items.Refresh();
         GridHelper.SelectRow(dgrSegmentsCategories, dgrSegmentsCategories.SelectedIndex);
     }
 }
        /// <summary>
        /// Llena el grid de segmentCategory
        /// </summary>
        /// <param name="segmentCategory">Objeto a seleccionar</param>
        /// <history>
        /// [emoguel] created 02/06/2016
        /// </history>
        private async void LoadSegmentsCategories(SegmentCategory segmentCategory = null)
        {
            try
            {
                status.Visibility = Visibility.Visible;
                int nIndex = 0;
                List <SegmentCategory> lstSegmentCategories = await BRSegmentsCategories.GetSegmentsCategories(_nStatus, _segmentCategoryFilter);

                dgrSegmentsCategories.ItemsSource = lstSegmentCategories;
                if (lstSegmentCategories.Count > 0 && segmentCategory != null)
                {
                    segmentCategory = lstSegmentCategories.Where(sc => sc.scID == segmentCategory.scID).FirstOrDefault();
                    nIndex          = lstSegmentCategories.IndexOf(segmentCategory);
                }
                GridHelper.SelectRow(dgrSegmentsCategories, nIndex);
                StatusBarReg.Content = lstSegmentCategories.Count + " Segments Categories.";
                status.Visibility    = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
Example #6
0
        /// <summary>
        /// Llena el grid de Segments order
        /// </summary>
        /// <history>
        /// [emoguel] created 31/05/2016
        /// </history>
        private async void LoadSegmentsCategoriesOrder()
        {
            try
            {
                status.Visibility = Visibility.Visible;
                txtStatus.Text    = "Loading...";
                List <SegmentCategory> lstObjects = await BRSegmentsCategories.GetSegmentsCategories();

                lstObjects = lstObjects.OrderBy(sc => sc.scO).ToList();
                dgrSegmentsCategories.ItemsSource = lstObjects;
                lstObjects.ForEach(sc =>
                {
                    SegmentCategory segmentCategory = new SegmentCategory();
                    ObjectHelper.CopyProperties(segmentCategory, sc);
                    _lstSegmentscategory.Add(segmentCategory);
                });
                GridHelper.SelectRow(dgrSegmentsCategories, 0);
                status.Visibility = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                UIHelper.ShowMessage(ex);
            }
        }
        /// <summary>
        /// Recarga los datos del grid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <history>
        /// [emoguel] created 02/06/2016
        /// </history>
        private void btnRef_Click(object sender, RoutedEventArgs e)
        {
            SegmentCategory segmentCategory = (SegmentCategory)dgrSegmentsCategories.SelectedItem;

            LoadSegmentsCategories(segmentCategory);
        }
Example #8
0
        /// <summary>
        /// Guarda un SegmentCategory
        /// </summary>
        /// <param name="segmentCategory">OBjeto a guardar</param>
        /// <param name="lstAdd">Lista a asignar</param>
        /// <param name="lstDel">Lista a desasignar</param>
        /// <param name="blnUpdate">True. Actualiza | False. Inserta</param>
        /// <returns>-1. Existe un registro con el mismo ID| 0. Nno se guardó | 1. se guardó </returns>
        /// <history>
        /// [emoguel] created 02/06/2016
        /// </history>
        public static async Task <int> SaveSegmentCategory(SegmentCategory segmentCategory, List <Item> lstAdd, List <Item> lstDel, bool blnUpdate)
        {
            int 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)
                            {
                                dbContext.Entry(segmentCategory).State = System.Data.Entity.EntityState.Modified;
                            }
                            #endregion
                            #region Add
                            else
                            {
                                if (dbContext.SegmentsCategories.Where(sc => sc.scID == segmentCategory.scID).FirstOrDefault() != null)
                                {
                                    return(-1);
                                }
                                else
                                {
                                    int maxvalue        = dbContext.SegmentsCategories.Max(sc => sc.scO);
                                    segmentCategory.scO = maxvalue + 1;
                                    dbContext.SegmentsCategories.Add(segmentCategory);
                                }
                            }
                            #endregion

                            #region Segments Add
                            dbContext.SegmentsByAgencies.AsEnumerable().Where(se => lstAdd.Any(it => it.UserId == se.seID && it.By == "Agency")).ToList().ForEach(se =>
                            {
                                se.sesc = segmentCategory.scID;
                            });

                            dbContext.SegmentsByLeadSources.AsEnumerable().Where(so => lstAdd.Any(it => so.soID == it.UserId && it.By != "Agency")).ToList().ForEach(so =>
                            {
                                so.sosc = segmentCategory.scID;
                            });
                            #endregion

                            #region Segments Del
                            dbContext.SegmentsByAgencies.AsEnumerable().Where(se => lstDel.Any(it => it.UserId == se.seID && it.By == "Agency")).ToList().ForEach(se =>
                            {
                                se.sesc = null;
                            });

                            dbContext.SegmentsByLeadSources.AsEnumerable().Where(so => lstDel.Any(it => so.soID == it.UserId && it.By != "Agency")).ToList().ForEach(so =>
                            {
                                so.sosc = null;
                            });
                            #endregion

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

            return(nRes);
        }
Example #9
0
        /// <summary>
        /// Obtiene registros del catalogo SegmentCategories
        /// </summary>
        /// <param name="nStatus">-1. Todos | 0. Inactivos | 1. Activos</param>
        /// <param name="segmenCategory">Objeto con filtros adicionales</param>
        /// <returns>Lista de tipo SegmentCategory</returns>
        /// <history>
        /// [emoguel] created 02/06/2016
        /// </history>
        public async static Task <List <SegmentCategory> > GetSegmentsCategories(int nStatus = -1, SegmentCategory segmenCategory = null)
        {
            List <SegmentCategory> lstSegmentsCategories = await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    var query = from sc in dbContext.SegmentsCategories
                                select sc;

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

                    if (segmenCategory != null)                              //Verificamos que tengamos un objeto
                    {
                        if (!string.IsNullOrWhiteSpace(segmenCategory.scID)) //filtro por ID
                        {
                            query = query.Where(sc => sc.scID == segmenCategory.scID);
                        }

                        if (!string.IsNullOrWhiteSpace(segmenCategory.scN))//Filtro por Descripción
                        {
                            query = query.Where(sc => sc.scN.Contains(segmenCategory.scN));
                        }
                    }

                    return(query.OrderBy(sc => sc.scN).ToList());
                }
            });

            return(lstSegmentsCategories);
        }