/// <summary> /// Guarda un sale Type Category. /// agregar sale Types al sale type category /// Eliminar saleTypes del sale type category /// </summary> /// <param name="saleTypeCategory">Objeto a guardar en la BD</param> /// <param name="blnUpdate"> /// True. Actualiza /// False. Agrega /// </param> /// <param name="lstAddSaleTypes">Sale Types a agregar</param> /// <param name="lstDelSaleTypes">Sale Types a Eliiminar</param> /// <returns>-1.- Existe un registro con el mismo ID| 0. No se guardó | >0. Se guardó correctamente</returns> /// <history> /// [emoguel] created 01-08-2016 /// </history> public static async Task <int> SaveSaleTypeCategory(SaleTypeCategory saleTypeCategory, bool blnUpdate, List <SaleType> lstAddSaleTypes, List <SaleType> lstDelSaleTypes) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transacction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { if (blnUpdate) { dbContext.Entry(saleTypeCategory).State = EntityState.Modified; } else { if (dbContext.SaleTypesCategories.Where(stc => stc.stcID == saleTypeCategory.stcID).FirstOrDefault() != null) { return -1; } else { dbContext.Entry(saleTypeCategory).State = EntityState.Added; } } #region //Agregar saleTypes if (lstAddSaleTypes.Count > 0) { lstAddSaleTypes.ForEach(st => { st.ststc = saleTypeCategory.stcID; dbContext.Entry(st).State = EntityState.Modified; }); } //Eliminar saleTypes if (lstDelSaleTypes.Count > 0) { lstDelSaleTypes.ForEach(st => { st.ststc = null; dbContext.Entry(st).State = EntityState.Modified; }); } #endregion int nRes = dbContext.SaveChanges(); transacction.Commit(); return nRes; } catch { transacction.Rollback(); throw; } } } })); }
/// <summary> /// Valida si un SaleTypeCategory cumple con los filtros actuales /// </summary> /// <param name="saleTypeCategory">objeto a validar</param> /// <returns> /// True. Si cumple con los filtros /// False. No cumple con los filtros actuales /// </returns> /// <history> /// [emoguel] created 30/07/2016 /// </history> private bool ValidateFilter(SaleTypeCategory saleTypeCategory) { if (_nStatus != -1)//Filtro por estatus { if (saleTypeCategory.stcA != Convert.ToBoolean(_nStatus)) { return(false); } } if (!string.IsNullOrWhiteSpace(_saleTypeCategoryFilter.stcID))//Filtro por ID { if (_saleTypeCategoryFilter.stcID != saleTypeCategory.stcID) { return(false); } } if (!string.IsNullOrWhiteSpace(_saleTypeCategoryFilter.stcN))//Filtro por descripción { if (!saleTypeCategory.stcN.Contains(_saleTypeCategoryFilter.stcN, StringComparison.OrdinalIgnoreCase)) { return(false); } } return(true); }
/// <summary> /// Abre la ventana detalle en modo "detalle" o "edición" dependiendo de sus permisos /// </summary> /// <history> /// [emoguel] created 30/07/2016 /// </history> private void Cell_DoubleClick(object sender, RoutedEventArgs e) { frmSaleTypeCategoryDetail frmSaleTypeCategory = new frmSaleTypeCategoryDetail(); frmSaleTypeCategory.Owner = this; frmSaleTypeCategory.enumMode = EnumMode.Edit; SaleTypeCategory saleTypeCategory = dgrSaleTypesCategories.SelectedItem as SaleTypeCategory; frmSaleTypeCategory.oldSaleTypeCategory = saleTypeCategory; if (frmSaleTypeCategory.ShowDialog() == true) { List <SaleTypeCategory> lstSaleTypes = dgrSaleTypesCategories.ItemsSource as List <SaleTypeCategory>; int nIndex = 0; if (ValidateFilter(frmSaleTypeCategory.saleTypeCategory)) { ObjectHelper.CopyProperties(saleTypeCategory, frmSaleTypeCategory.saleTypeCategory); //Actualizamos los datos lstSaleTypes.Sort((x, y) => string.Compare(x.stcN, y.stcN)); //Ordenamos la lista nIndex = lstSaleTypes.IndexOf(saleTypeCategory); //Buscamos la posición } else { lstSaleTypes.Remove(saleTypeCategory); } dgrSaleTypesCategories.Items.Refresh(); //Actualizamos la vista GridHelper.SelectRow(dgrSaleTypesCategories, nIndex); //Seleccionamos el registro StatusBarReg.Content = "Categories (" + lstSaleTypes.Count + ")"; //Actualizamos el contador } }
/// <summary> /// carga el grid con registros /// </summary> /// <param name="saleTypeCategory">Objeto a seleccionar en caso de que se envíe uno</param> /// <history> /// [emoguel] created 30/07/2016 /// </history> private async void LoadSaleTypesCategories(SaleTypeCategory saleTypeCategory = null) { try { status.Visibility = Visibility.Collapsed; int nIndex = 0; List <SaleTypeCategory> lstSaleTypesCategories = await BRSaleTypesCategories.GetSaleCategories(_nStatus, _saleTypeCategoryFilter); dgrSaleTypesCategories.ItemsSource = lstSaleTypesCategories; if (lstSaleTypesCategories.Count > 0 && saleTypeCategory != null) { saleTypeCategory = lstSaleTypesCategories.Where(stc => stc.stcID == saleTypeCategory.stcID).FirstOrDefault(); nIndex = lstSaleTypesCategories.IndexOf(saleTypeCategory); } GridHelper.SelectRow(dgrSaleTypesCategories, nIndex); StatusBarReg.Content = "Categories (" + lstSaleTypesCategories.Count + ")"; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Obtiene registros del catalogo SaleTypeCategories /// </summary> /// <param name="nStatus">-1. Todos | 0. Inactivos | 1. Activos</param> /// <param name="saleTypeCategory">Objeto con filtros adicionales</param> /// <returns>Lista de tipo SaleTypeCategory</returns> /// <history> /// [emoguel] created 19/04/2016 /// [emoguel] modified 28/06/2016 -----> Se volvió async /// </history> public async static Task <List <SaleTypeCategory> > GetSaleCategories(int nStatus = -1, SaleTypeCategory saleTypeCategory = null) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { var query = from stc in dbContext.SaleTypesCategories select stc; if (nStatus != -1)//Filtro por estatus { bool blnStatus = Convert.ToBoolean(nStatus); query = query.Where(stc => stc.stcA == blnStatus); } if (saleTypeCategory != null)//Verificamos que se tenga un objeto { if (!string.IsNullOrWhiteSpace(saleTypeCategory.stcID)) { query = query.Where(stc => stc.stcID == saleTypeCategory.stcID); } if (!string.IsNullOrWhiteSpace(saleTypeCategory.stcN))//Filtro por descripción { query = query.Where(stc => stc.stcN.Contains(saleTypeCategory.stcN)); } } return query.OrderBy(stc => stc.stcN).ToList(); } })); }
/// <summary> /// Recarga los datos de la lista /// </summary> /// <history> /// [emoguel] created 30/07/2016 /// </history> private void btnRef_Click(object sender, RoutedEventArgs e) { SaleTypeCategory saleTypeCategory = dgrSaleTypesCategories.SelectedItem as SaleTypeCategory; LoadSaleTypesCategories(saleTypeCategory); }