/// <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); }
/// <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); } }
/// <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); } }
/// <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); }
/// <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); }
/// <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); }