/// <summary>
        /// Crea un nuevo alimentador y lo guarda en la aplicación
        /// </summary>
        /// <param name="alimentador">El tablero a insertar</param>
        /// <param name="task_completed">La tarea que se ejecuta al terminar la transacción.</param>
        public static void CreateAlimentadorTr(this AlimInput alimentador, Action <Object> task_completed)
        {
            //1: Se agregá el tablero a la aplicación
            SQLiteWrapper tr = new SQLiteWrapper(TabalimApp.AppDBPath)
            {
                TransactionTask = InsertAlimTask,
                TaskCompleted   = (Object result) => { task_completed(result); }
            };

            tr.Run(alimentador);
        }
        /// <summary>
        /// Define la tarea que inserta un alimentador
        /// </summary>
        /// <param name="conn">La conexión a SQLite.</param>
        /// <param name="input">La entrada de la conexión debe ser un alimentador.</param>
        /// <returns>El resultado de la transacción</returns>
        private static object InsertAlimTask(SQLite_Connector conn, object input)
        {
            AlimInput alim = (AlimInput)input;
            Boolean   flag = false;

            flag = alim.Create(conn, null);
            if (flag)
            {
                alim.Id = (int)conn.SelectValue <long>("alimentador".SelectLastId(alim.PrimaryKey));
            }
            return(new Object[] { flag, alim.Id > 0 ? alim : null });
        }
Ejemplo n.º 3
0
        private void btnEditLine_Click(object sender, RoutedEventArgs e)
        {
            int i      = int.Parse((((sender as Button).Parent as Viewbox).Parent as StackPanel).Children.OfType <TextBlock>().ToArray()[1].Text);
            var dialog = new AlimentadorPicker(TabalimApp.CurrentProject.Lineas[i]);

            dialog.ShowDialog();
            if (dialog.DialogResult.Value == true)
            {
                Linea linea      = dialog.SelectedLinea;
                var   updateData = new KeyValuePair <String, Object>[] {
                    new KeyValuePair <string, object>("dest_from", linea.From),
                    new KeyValuePair <string, object>("dest_end", linea.Type.Id),
                    new KeyValuePair <string, object>("fact_demanda", linea.Destination.FactorDemanda),
                    new KeyValuePair <string, object>("fact_temperatura", linea.Temperatura),
                    new KeyValuePair <string, object>("fac_agrupamiento", linea.FactorAgrupamiento),
                    new KeyValuePair <string, object>("fac_potencia", linea.FactorPotencia),
                    new KeyValuePair <string, object>("longitud", linea.Longitud),
                    new KeyValuePair <string, object>("is_cobre", linea.IsCobre),
                    new KeyValuePair <string, object>("dest_name", linea.To),
                    new KeyValuePair <string, object>("dest_desc", linea.ToDesc),
                    new KeyValuePair <string, object>("conductor", linea.SelectedConductor)
                };
                SQLiteWrapper tr = new SQLiteWrapper(TabalimApp.AppDBPath)
                {
                    TransactionTask = (SQLite_Connector conn, Object input) =>
                    {
                        Object[]  data   = input as Object[];
                        int       alimId = (int)data[0];
                        AlimInput inAlim = (AlimInput)data[1];
                        var       uData  = (KeyValuePair <String, Object>[])data[2];
                        //inAlim.Id = alimId;
                        if (inAlim.Update(conn, uData))
                        {
                            return(inAlim);
                        }
                        else
                        {
                            return(null);
                        }
                    },
                    TaskCompleted = (Object result) =>
                    {
                        if (result is AlimInput)
                        {
                            TabalimApp.CurrentProject.Lineas[i].Update(result as AlimInput);
                            SetItemSource(runtime.TabalimApp.CurrentProject.Lineas.Values.Select(x => new AlimentadorRow(x)));
                        }
                    }
                };
                tr.Run(new Object[] { i, linea.ToAlimInput(TabalimApp.CurrentProject), updateData });
            }
        }
        public static void CreateAlimentadorTr(this TabalimApp app, AlimInput input, Destination destination, Action <Object, int> alimoAddedTask = null)
        {
            input.CreateAlimentadorTr(
                (Object qResult) =>
            {
                var result     = (Object[])qResult;
                AlimInput alim = (AlimInput)result[1];
                //Si se agregá el tablero alimentador
                if ((Boolean)result[0] && alim != null)
                {
                    switch (alim.End.Id)
                    {
                    case 0:        //Tablero solo insertar la conexión
                        Tablero tab = destination.Cargas.FirstOrDefault();
                        if (tab != null)
                        {
                            CreateAlimentadorDestinationTr(alim.Id, tab.Id, 1, alimoAddedTask);
                        }
                        break;

                    case 1:        //Un solo motor
                    case 3:        //Varios motores
                        CreateMotorAndDestinations(alim.Id, destination.Motors, alimoAddedTask);
                        break;

                    case 2:        //Un solo motor y otras cargas
                    case 4:        //Varios motores y otras cargas
                        CreateMotorAndCargasAndDestinations(alim.Id, destination.Cargas, destination.Motors, alimoAddedTask);
                        break;

                    default:        //Capacitor Transformador o sub-alimentador
                        CreateExtraDataAndDestinations(alim.Id, destination.ExtraData, alimoAddedTask);
                        break;
                    }
                }
            });
        }
Ejemplo n.º 5
0
        private void btnDeleteLine_Click(object sender, RoutedEventArgs e)
        {
            int           i  = int.Parse((((sender as Button).Parent as Viewbox).Parent as StackPanel).Children.OfType <TextBlock>().ToArray()[1].Text);
            SQLiteWrapper tr = new SQLiteWrapper(TabalimApp.AppDBPath)
            {
                TransactionTask = (SQLite_Connector conn, Object input) =>
                {
                    Object[]  data   = input as Object[];
                    int       alimId = (int)data[0];
                    AlimInput inAlim = (AlimInput)data[1];
                    return(inAlim.Delete(conn));
                },
                TaskCompleted = (Object result) =>
                {
                    if ((Boolean)result)
                    {
                        //TabalimApp.CurrentProject.Lineas.Values.ToList().ForEach(x => x.GetNumber());
                        SetItemSource(runtime.TabalimApp.CurrentProject.Lineas.Values.Select(x => new AlimentadorRow(x)));
                    }
                }
            };

            tr.Run(new Object[] { i, TabalimApp.CurrentProject.Lineas[i].ToAlimInput(TabalimApp.CurrentProject) });
        }