Page 1 of 2

Taxare

Posted: Mon Jan 28, 2019 3:41 pm
by josemecheverri

Sprint # 1

Posted: Wed Jan 30, 2019 3:57 pm
by josemecheverri
Fecha inicio: 28-01-2019
Fecha finalización: 04-02-2019


Backlog list del Sprint
  • Planteamiento de la idea de negocio del proyecto
  • Modelo Canvas
  • La lista de actividades (Propensa a cambios)
  • Primeros acercamientos con un posible cliente y captura de requisitos
  • Decidir que lenguaje y plataforma usar para desarrollar la aplicacion
Velocity inicial12

¿Que hice hasta hoy?
  • Modelo Canvas (2)
Image
  • La lista de actividades (Propensa a cambios) (3)
Image
  • Primeros acercamientos con el cliente y captura de requisitos (4)
Image


Velocity final12

¿Que voy hacer?
  • Tomar la decision de cual plataforma usar para el desarrollo de la aplicación, ya sea de escritorio o web.
  • Empezar a documentarme acerca de la plataforma y lenguaje elegido.
  • Planear Sprint #2
¿Que problemas se ha tenido?
  • Indecisión sobre la plataforma a elegir para desarrollar la aplicación

Sprint #2

Posted: Mon Feb 04, 2019 2:05 pm
by josemecheverri
Fecha inicio: 4-02-2019
Fecha finalización: 11-02-2019

Backlog list del Sprint
  • Tomar la decisión de la plataforma a usar para desarrollar la aplicación
  • Diseñar la base de datos
  • Capturar algunos requisitos del cliente, que como mencione es un negocio familiar y los recogí directamente de mi tio, para hacer esto debí entender la lógica del negocio y todas aquellas cosas que se manejan y se documentan
  • Crear de un tablero en trello para manejar los sprints ordenadamente
  • Crear el repositorio
Velocity inicial:17

¿Que hice hasta hoy?
  • Decidí desarrollar la aplicación en C# con Windows forms, es decir sera una aplicación de escritorio con una base de datos en SQL server (3)
  • Cree la base de datos (5)
Image
  • Capture algunos requisitos del cliente, que como mencione es un negocio familiar y los recogí directamente de mi tío, para hacer esto debí entender la lógica del negocio y todas aquellas cosas que se manejan y se documentan(5)
Image
  • Tengo un primer acercamiento a lo que el cliente necesita, es decir el Prodcut Backlog(3)

Velocity final:17

¿Que voy hacer?
  • Investigar sobre un Framework que me sera de ayuda para el desarrollo de mi aplicación que se llama Entity Framework para el manejo de la persistencia
  • Crear un Backlog con las historias de usuario mas importantes
  • Iinvestigar como implementar Google Maps en Windows Forms
  • Planear el Sprint #3
¿Que problemas se ha tenido?
  • Algunos con el desarrollo de la base de datos, pero el resto de cosas marchan bien.
  • Debo ir pensando en como generar unos informes completos en PDF indispensables para el cliente
  • Tuve que hacer algunos cambios en la base de datos
A mitad de semana subo las evidencias :arrow: :arrow:

Sprint #3

Posted: Mon Feb 11, 2019 3:58 pm
by josemecheverri
Fecha inicio: 11-02-2019
Fecha finalización: 18-02-2019

Backlog list del Sprint
  • Conectar la base de datos con la aplicación (5)
  • Crear Modulo de gestión de vehículos (5)
  • Organizar lista de actividades en el trello para este Sprint(1)

Sumatoria de los esfuerzos estimados: 11

¿Que hice hasta hoy?
  • Conectar la base de datos con la aplicación (2)
Image
  • Crear Modulo de gestión de vehículos (5)
Image
  • Organizar lista de actividades en el trello para este Sprint(1)
https://trello.com/b/b7kEhOgI/taxare
Image

Sumatoria de los esfuerzos despues del sprint: 11

¿Que voy hacer?
  • Desarrollar el Sprint #4
¿Que problemas se ha tenido?
  • No tengo claridad para aplicar los Story points

1

Posted: Mon Feb 18, 2019 4:00 pm
by josemecheverri

Sprint #4

Posted: Mon Feb 18, 2019 4:09 pm
by josemecheverri
Fecha inicio: 18-02-2019
Fecha finalización: 25-02-2019

Backlog list del Sprint
  • Añadir Licencias(1)
  • Eliminar Licencias (1)
  • Actualizar Licencias (1)
  • Listar y buscar licencias(1)
  • Enlazar licencias con los conductores(1)
  • Conectar la base de datos con la aplicación (1)
  • Eliminar conductor(1)
  • Añadir conductor (1)
  • Actualizar conductor(1)
  • buscar y listar conductor(1)
  • Ordenar licencias por fecha1
  • Ordenar conductores por varias opcione1s
Velocity inicial : 12



Sumatoria de los esfuerzos estimados: 10

¿Que hice hasta hoy?
  • Añadir Licencias(1)
  • Eliminar Licencias (1)
  • Actualizar Licencias (1)
  • Listar y buscar licencias(1)
  • Enlazar licencias con los conductores(1)
  • Conectar la base de datos con la aplicación (1)
  • Eliminar conductor(1)
  • Añadir conductor (1)
  • Actualizar conductor(1)
Velocity final : 9

Evidencias

Controlador conductores

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BR = Broker;
using EN = Entities;

namespace Controllers
{
    public class Conductores
    {
        //Entidades para el manejo de la persistencia
        BR.db_taxareEntities db = new BR.db_taxareEntities();
        EN.Conductor conductor = new EN.Conductor();

        public bool CrearConductor(EN.Conductor conductor)
        {

            bool resultado = false;
            try
            {
                //Mapeo
                BR.Conductor other = new BR.Conductor();
                other.apellido = conductor.apellido;
                other.cedula = conductor.cedula;
                other.nombre = conductor.nombre;
                other.telefono = conductor.telefono;

                //Persitencia
                db.Conductor.Add(other);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;
        }

        public bool EliminaConducor(long id)
        {

            bool resultado = false;
            try
            {
                BR.Conductor conductor = db.Conductor.Where(x => x.id == id).FirstOrDefault();
                db.Conductor.Remove(conductor);
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;

        }

        public bool ActualizarConductor(EN.Conductor conductorUpdate)
        {

            bool resultado = false;
            try
            {
                var driver = db.Conductor.Where(x => x.id == conductorUpdate.id).FirstOrDefault();
                driver.apellido = conductorUpdate.apellido;
                driver.cedula = conductorUpdate.cedula;
                driver.nombre = conductorUpdate.nombre;
                driver.telefono = conductorUpdate.telefono;
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;

        }
        public List<BR.Conductor> MostrarConductores()
        {

            try
            {
                return db.Conductor.ToList<BR.Conductor>();
            }
            catch (Exception ex)
            {

                throw ex;
            }


        }
        public BR.Conductor MostarConductor(long id)
        {
            try
            {
                return  db.Conductor.Where(x => x.id == id).FirstOrDefault();

            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
        public BR.Conductor MostarConductor(string cedula)
        {
            try
            {
                return  db.Conductor.Where(x => x.cedula == cedula).FirstOrDefault();
            
            }
            catch (Exception ex)
            {

                throw ex;
            }

        }

        public BR.Conductor MostarConductorxNombre(string nombre)
        {
            try
            {
                return db.Conductor.Where(x => x.nombre == nombre).FirstOrDefault();

            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
        public long MostarIdConductor(string cedula)
        {
            try
            {
                return db.Conductor.Where(x => x.cedula == cedula).FirstOrDefault().id;

            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
    }
}
Controlador licencias

Code: Select all

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BR = Broker;
using EN = Entities;

namespace Controllers
{
   public  class Licencias
    {
        BR.db_taxareEntities db = new BR.db_taxareEntities();
        Conductores conductorController = new Conductores();
        Transito transitoController = new Transito();

        public bool CrearLicencia(EN.Licencias other)
        {
            bool resultado = false;


            try
            {
                //Mapeo
                BR.Licencias lic = new BR.Licencias();

                lic.categoria = other.categoria;
                lic.id_conductor = conductorController.MostarIdConductor(other.conductor);
                lic.expedicon = other.expedicon;
                lic.id_secretaria = transitoController.MostrarSecretaria(other.secretaria);
                lic.Numero_pase = other.Numero_pase;
                lic.vencimiento = other.vencimiento;

                db.Licencias.Add(lic);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;

        }

        public bool EliminarLicencia(int Numero)
        {
            bool resultado = false;
            try
            {

                var lic = db.Licencias.Where(x => x.Numero_pase == Numero).FirstOrDefault();
                db.Licencias.Remove(lic);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;
        }
        public bool ActualizarLicencia(EN.Licencias other)
        {

            bool resultado = false;
            try
            {
                var lic = db.Licencias.Where(x => x.Numero_pase == other.Numero_pase).FirstOrDefault();

                lic.categoria = other.categoria;
                lic.id_conductor = conductorController.MostarIdConductor(other.conductor);
                lic.expedicon = other.expedicon;
                lic.id_secretaria = transitoController.MostrarSecretaria(other.secretaria);
                lic.Numero_pase = other.Numero_pase;
                lic.vencimiento = other.vencimiento;

                db.SaveChanges();
                resultado = true;
            }
            catch (Exception ex)
            {

                throw ex;
            }

            return resultado;

        }

        public EN.Licencias MostarLicencia(int Numero)
        {

            try
            {
                BR.Licencias other = db.Licencias.Where(x => x.Numero_pase == Numero).FirstOrDefault();
                EN.Licencias lic = new EN.Licencias();
                TextInfo myTI = CultureInfo.CurrentCulture.TextInfo;

                lic.categoria = other.categoria;
                lic.conductor = other.Conductor.nombre.ToUpper()+" "+other.Conductor.apellido.ToUpper();
                lic.expedicon = other.expedicon;
                lic.Numero_pase = other.Numero_pase;
                lic.secretaria = myTI.ToTitleCase(other.Secretarias_transito.localidad);
                lic.vencimiento = other.vencimiento;


                return lic;

            }
            catch (Exception ex)
            {

                throw ex;
            }


        }
    }
}
Image

Image

¿Que voy hacer?
  • buscar y listar conductor(1)
  • Ordenar licencias por fecha(1)
  • Ordenar conductores por varias opciones(1)
  • Desarrollar el Sprint #4
¿Que problemas se ha tenido?

Para este Sprint no logre terminar 3 actividades

Sprint #5

Posted: Mon Mar 04, 2019 3:01 pm
by josemecheverri
Fecha inicio: 25-02-2019
Fecha finalización: 4-03-2019

Backlog list del Sprint
  • Crear SOAT(2)
  • Buscar SOAT(2)
  • Actualizar SOAT(2)
  • Eliminar SOAT(2)

Sumatoria de los esfuerzos estimados: 8

¿Que hice hasta hoy?
  • Crear SOAT(2)
Yo como Administrador
Quiero que : Quiero añadir un SOAT al sistema
Así que : Podre ver inmediatamente el SOAT registrado en un DATA-Table
Condición de satisfacción: El administrador puede crear el SOAT y ver reflejado el cambio al instante

  • Buscar SOAT(2)
Yo como Administrador
Quiero que : Quiero buscar un SOAT en el sistema por placa o por numero de SOAT
Así que : Aparecerá le registro con la conciencia en el formulario y podre editarlo al instante
Condición de satisfacción: El administrador encontrara el SOAT que busca y de no ser asi se le avisara que el registro no existe.

  • Actualizar SOAT(2)
Yo como Administrador
Quiero que : Quiero actualizar un SOAT en el sistema
Así que : Podre editar los datos e inmediatamente ver el cambio en el DATA-table

  • Eliminar SOAT(2)
Yo como Administrador
Quiero que : Quiero eliminar un SOAT del sistema
Así que : Podre buscar un registro y eliminarlo, sin antes mostrar un mensaje de confirmación para evitar errores

  • Velocity final : 8
Evidencias

Controlador SOAT

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BR = Broker;
using EN = Entities;

namespace Controllers
{
    public class Soat
    {
        BR.db_taxareEntities db = new BR.db_taxareEntities();
        public bool Crear(EN.Soat other)
        {

            bool resultado = false;

            try
            {
                //Mapeo de EN a BR
                BR.Soat st = new BR.Soat();
                st.expedicion = other.expedicion;
                st.expiracion = other.expiracion;
                st.numero = other.numero;
                st.placa_taxi = other.placa_taxi;
                st.valor = other.valor;
                //Insert en la bd
                db.Soat.Add(st);
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception)
            {

                throw;
            }
            return resultado;
        }

        public bool Eliminar(int id)
        {

            bool resultado = false;

            try
            {
                var delete = db.Soat.Where(x => x.id == id).FirstOrDefault();
                db.Soat.Remove(delete);
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception)
            {

                throw;
            }
            return resultado;
        }

        public bool Actualizar(EN.Soat other)
        {

            bool resultado = false;

            try
            {
                var u = db.Soat.Where(x => x.id == other.id).FirstOrDefault();
                //u.numero = other.numero;
                //Update en la bd
                u.placa_taxi = other.placa_taxi;
                u.expedicion = other.expedicion;
                u.expiracion = other.expiracion;
                u.valor = other.valor;
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception)
            {

                throw;
            }
            return resultado;
        }

        public List<BR.Soat> GetSoats()
        {

            return db.Soat.ToList<BR.Soat>();
        }

        public BR.Soat GetSoat(int id)
        {

            return db.Soat.Where(x => x.id == id).FirstOrDefault();
        }

        public List<BR.Soat> ProximosVencer()
        {

            List<BR.Soat> ls = db.Soat.ToList<BR.Soat>();
            ls.Sort((x, y) => x.expiracion.CompareTo(y.expiracion));
            return ls;
        }
    }
}
Image


¿Que voy hacer?
  • Desarrollar el Sprint #6
  • Investigar como hacer excepciones personalizadas
  • Investigar sobre como crear pruebas automatizadas en Visual Studio - C# como medio de testeo para mi aplicación para contribuir enormenete en la calidad del software
¿Que problemas se ha tenido?
  • Ninguno

Sprint # 6

Posted: Mon Mar 11, 2019 2:21 pm
by josemecheverri
Fecha inicio: 4-03-2019
Fecha finalización: 11-03-2019

Backlog list del Sprint
  • Interfaz de producción(3)
  • Controladora producción(8)
Sumatoria de los esfuerzos estimados: 12


¿Que hice hasta hoy?
  • Interfaz de producción(3)
Yo como Administrador
Quiero que : Ver todas la producciones por taxi
Así que : Aparecerá un dataTable con toda la información de las produciones
Condición de satisfacción: El administrador podra ver claramente las producciones

  • Controladora producción(8)
Yo como Administrador
Quiero que : Maneja run CRUD de las producciones
Así que : Podre eliminar, buscar, annnadir y editar producciones
Condición de satisfacción: El administrador podrá hacer el CRUD por medio de inputs y botones bien diferenciados, antes de eliminar o editar se debe validar la acción

  • Velocity final : 12
Evidencias

BackEnd

Codigo - Controladora

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BR = Broker;
using EN = Entities;

namespace Controllers
{
    public class Produccion
    {
        BR.db_taxareEntities db;


        public Produccion() {

            db = new BR.db_taxareEntities();
        }
        public bool CrearProduccion(EN.Produccion other)
        {


            bool resultado = false;
            try
            {
                //Mapeo
                BR.Produccion produccion = new BR.Produccion();
                produccion.idTurno = other.idTurno;
                produccion.producido = other.producido;
                //Insert en la BD
                db.Produccion.Add(produccion);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;


        }

        public bool EliminarPrduccion(long id)
        {

            bool resultado = false;
            try
            {

                var pro = db.Produccion.Where(x => x.id == id).FirstOrDefault();
                db.Produccion.Remove(pro);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;


        }

        public bool ActualizarProduccion(EN.Produccion other)
        {

            bool resultado = false;
            try
            {

                var pro = db.Produccion.Where(x => x.id == other.id).FirstOrDefault();
                pro.idTurno = other.idTurno;
                pro.producido = other.producido;     
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;
        }

        public List<EN.Produccion> Producciones()
        {
            List<EN.Produccion> ListaPT = new List<EN.Produccion>();

            var query = db.Produccion.ToList();


            foreach (BR.Produccion other in query)
            {

                EN.Produccion p = new EN.Produccion();
                //Mapeo y calculos
                TimeSpan dias = other.Turnos.fin - other.Turnos.inicio;
                p.conductor = other.Turnos.Conductor.nombre.ToUpper() + " " + other.Turnos.Conductor.apellido.ToUpper();
                p.dias = dias.Days;
                p.idTurno = other.idTurno;
                p.placa = other.Turnos.placaTaxi;
                p.producido = other.producido;
                ListaPT.Add(p);

            }

            return ListaPT;

        }

        public EN.Produccion produccion(long id)
        {
            var other = db.Produccion.Where(x => x.id == id).FirstOrDefault();
            EN.Produccion p = new EN.Produccion();

            TimeSpan dias = other.Turnos.fin - other.Turnos.inicio;
            p.conductor = other.Turnos.Conductor.nombre.ToUpper() + " " + other.Turnos.Conductor.apellido.ToUpper();
            p.dias = dias.Days;
            p.idTurno = other.idTurno;
            p.placa = other.Turnos.placaTaxi;
            p.producido = other.producido;

            return p;

        }

        //public List<EN.Produccion> BuscarProduccionPorPlaca(string placa)
        //{
        //    List<EN.Produccion> ListaPT = new List< EN.Produccion > ();

        //    var query =

        //            from p in db.Produccions
        //            join c in db.Conductors on p.id_taxista equals c.id
        //            where p.placa.Equals(placa)
        //            select new
        //            {

        //                id = p.id,
        //                placa = p.placa.ToUpper(),
        //                conductor = c.nombre.ToUpper() + " " + c.apellido.ToUpper(),
        //                inicio = p.inicio,
        //                final = p.final,
        //                valor = p.valor

        //            };

        //    foreach (var other in query.ToList())
        //    {

        //        Querys.ProduccionxTaxis pxt = new Querys.ProduccionxTaxis();

        //        pxt.id = other.id;
        //        TimeSpan resto = other.final - other.inicio;
        //        double total = resto.TotalDays + 1;
        //        pxt.dias = total;
        //        pxt.placa = other.placa;
        //        pxt.conductor = other.conductor;
        //        pxt.inicio = other.inicio;
        //        pxt.final = other.final;
        //        pxt.valor = other.valor;
        //        ListaPT.Add(pxt);

        //    }

        //    return ListaPT;

        //}

        //public List<Querys.ProduccionxTaxis> BuscarProduccionPorConductor(long idConductor)
        //{

        //    List<Querys.ProduccionxTaxis> ListaPT = new List<Querys.ProduccionxTaxis>();

        //    var query =

        //            from p in db.Produccions
        //            join c in db.Conductors on p.id_taxista equals c.id
        //            where p.id_taxista == idConductor
        //            select new
        //            {

        //                id = p.id,
        //                placa = p.placa.ToUpper(),
        //                conductor = c.nombre.ToUpper() + " " + c.apellido.ToUpper(),
        //                inicio = p.inicio,
        //                final = p.final,
        //                valor = p.valor

        //            };

        //    foreach (var other in query.ToList())
        //    {

        //        Querys.ProduccionxTaxis pxt = new Querys.ProduccionxTaxis();

        //        pxt.id = other.id;
        //        TimeSpan resto = other.final - other.inicio;
        //        double total = resto.TotalDays + 1;
        //        pxt.dias = total;
        //        pxt.placa = other.placa;
        //        pxt.conductor = other.conductor;
        //        pxt.inicio = other.inicio;
        //        pxt.final = other.final;
        //        pxt.valor = other.valor;
        //        ListaPT.Add(pxt);

        //    }

        //    return ListaPT;

        //}

        public long id(int idc)
        {

            return db.Produccion.Where(x => x.Turnos.idConductor == idc).FirstOrDefault().id;

        }

    }
}
Clase Produccion

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entities
{
    public class Produccion
    {

        public long id { get; set; }
        public Nullable<long> idTurno { get; set; }
        public double producido { get; set; }
        public string placa  { get; set; }
        public string conductor { get; set; }
        public int dias { get; set; }


     public Produccion(){ }
    
    //Metodo Constructor
    public Produccion(long id, long? idTurno, double producido, string placa, string conductor, int dias)
        {
            this.id = id;
            this.idTurno = idTurno;
            this.producido = producido;
            this.placa = placa;
            this.conductor = conductor;
            this.dias = dias;
        }
    }
}

Interfaz
Image


¿Que voy hacer?

Debo ir pensando en como generar unos informes completos en PDF indispensables para el cliente

¿Que problemas se ha tenido?
  • Ninguno

Sprint # 7

Posted: Mon Mar 18, 2019 3:34 pm
by josemecheverri
echa inicio: 11-03-2019
Fecha finalización: 18-03-2019

Backlog list del Sprint
  • Interfaz Gestion de conductores por taxis(2)
Yo como Administrador
Quiero que : Ver los conductores y los vehiculos de conducen en una interfaz ordenada
Así que : Se genera una interfaz en forma de ventana que le permitiraa administrar al usuario el modulo de conductores por taxis
Condición de satisfacción: Sera sencillo e intuitivo el manejo de esta interfaz
  • Asociar Conductor a taxis(2)
Yo como Administrador
Quiero que : Asignar uno o varios vehiculos a un conductor
Así que : Un formulario capturara la informacion y lo mostrara automaticamente en un DataTable
Condición de satisfacción: Se podra añadir un coductor para el manejo de la persistencia
  • Eliminar asociacion de taxis y conductores (2)
Yo como Administrador
Quiero : Seleccionar un registro y eliminarlo
Así que : Podre buscarlo por un dato irrepetible o seleccionarlo al hacer doble click en el dataTable
Condición de satisfacción: Al seleccionar el registro debe preguntarme si estoy seguro de eliminar un registro en cuestion
  • Editar Asociaciones de taxis y conductores(2)
Yo como Administrador
Quiero : Buscar una relación entre vehículo y taxi y poder editarla
Así que : Podre buscar un registro y seleccionarlo
Condición de satisfacción: Podre editar una asociación y ver el cambio reflejado inmediatamente en el DataTable
  • Listar los taxis por conductor(2)
Yo como Administrador
Quiero : Poder listar todos los registros en la base de datos
Así que : El dataTable ira listando por orden temporal las relaciones
Condición de satisfacción: Se pueden ver todos los registros en la base de datos
  • Velocity final : 10
¿Que hice hasta hoy?
  • Interfaz Gestión de conductores por taxis(3)
Image
  • Controladora producción(8)
BackEnd

Codigo - Controladora

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BR = Broker;
using EN = Entities;

namespace Controllers
{
    public class ConductoresXtaxis
    {
        BR.db_taxareEntities db;
        Conductores conductorController;
        Taxis taxisController;

        public ConductoresXtaxis()
        {
            db = new BR.db_taxareEntities();
            conductorController = new Conductores();
            taxisController = new Taxis();
        }

        public bool CrearCT(EN.ConductoresXtaxis other)
        {
            bool resultado = false;

            try
            {
                string nombre = other.conductor;
                string[] n = nombre.Split(' ');
                BR.ConductoresXtaxis CT = new BR.ConductoresXtaxis(conductorController.MostarConductorxNombre(n[0]).id, other.placaTaxi);
                db.ConductoresXtaxis.Add(CT);
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception)
            {

                throw;
            }
            return resultado;

        }

        public bool EliminarCT(long id)
        {

            bool resultado = false;

            try
            {
                var conductoresTaxis = db.ConductoresXtaxis.Where(x => x.id == id).FirstOrDefault();
                db.ConductoresXtaxis.Remove(conductoresTaxis);
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception)
            {

                throw;
            }
            return resultado;
        }

        public bool ActualizarCT(EN.ConductoresXtaxis other)
        {

            bool resultado = false;

            try
            {
                var update = db.ConductoresXtaxis.Where(x => x.id == other.id).FirstOrDefault();
                string nombre = other.conductor;
                string[] n = nombre.Split(' ');
                update.idConductor = conductorController.MostarConductorxNombre(n[0]).id;
                update.placaTaxi = other.placaTaxi;
                db.SaveChanges();
                resultado = true;
            }
            catch (Exception)
            {

                throw;
            }
            return resultado;
        }

        public EN.ConductoresXtaxis MostarCT(long id)
        {

            try
            {
                var  other = db.ConductoresXtaxis.Where(x => x.id == id).FirstOrDefault();
                EN.ConductoresXtaxis CT = new EN.ConductoresXtaxis(other.id, other.Conductor.nombre.ToUpper() + " " + other.Conductor.apellido.ToUpper(), other.placaTaxi);
                return CT;

            }
            catch (Exception)
            {

                throw;
            }
          
        }

        public List<EN.ConductoresXtaxis> ListaCT()
        {
            List<EN.ConductoresXtaxis> ListaCT = new List<EN.ConductoresXtaxis>();

            var query = db.ConductoresXtaxis.ToList();

            foreach (BR.ConductoresXtaxis other in query.ToList())
            {

                EN.ConductoresXtaxis cts = new EN.ConductoresXtaxis(other.id, other.Conductor.nombre.ToUpper() + " " + other.Conductor.apellido.ToUpper(), other.placaTaxi);
                ListaCT.Add(cts);
            }

            return ListaCT;

        }
    }
}
Burn down chart
Image

¿Que voy hacer?

Implementar informes completos en PDF con ItextSharp indispensables para el cliente https://www.youtube.com/watch?v=h5zGP6q7_d0.
Planear el sprint 7

¿Que problemas se ha tenido?
  • Tuve un error por lo cual debo crear una rama

Sprint # 8

Posted: Mon Mar 25, 2019 9:37 pm
by josemecheverri
Fecha inicio: 18-03-2019
Fecha finalización: 26-03-2019

Backlog list del Sprint
  • Interfaz de producción(3)
Yo como Administrador
Quiero que : Ver las producciones por vehiculos
Así que : Se genera una interfaz en forma de ventana que le permitirá administrar las producciones por taxis
  • Controladora produccion(8)
Yo como Administrador
Quiero que : Maneja run CRUD de las producciones
Así que : Podre eliminar, buscar, annnadir y editar producciones
Condición de satisfacción: El administrador podrá hacer el CRUD por medio de inputs y botones bien diferenciados, antes de eliminar o editar se debe validar la acción
  • Velocity final : 11
¿Que hice hasta hoy?
  • Interfaz de producción(3)
Image
  • Controladora produccion(8)

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BR = Broker;
using EN = Entities;

namespace Controllers
{
    public class Produccion
    {
        BR.db_taxareEntities db;


        public Produccion() {

            db = new BR.db_taxareEntities();
        }
        public bool CrearProduccion(EN.Produccion other)
        {


            bool resultado = false;
            try
            {
                //Mapeo
                BR.Produccion produccion = new BR.Produccion();
                produccion.idTurno = other.idTurno;
                produccion.producido = other.producido;
                //Insert en la BD
                db.Produccion.Add(produccion);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;


        }

        public bool EliminarPrduccion(long id)
        {

            bool resultado = false;
            try
            {

                var pro = db.Produccion.Where(x => x.id == id).FirstOrDefault();
                db.Produccion.Remove(pro);
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;


        }

        public bool ActualizarProduccion(EN.Produccion other)
        {

            bool resultado = false;
            try
            {

                var pro = db.Produccion.Where(x => x.id == other.id).FirstOrDefault();
                pro.idTurno = other.idTurno;
                pro.producido = other.producido;     
                db.SaveChanges();
                resultado = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
            return resultado;
        }

        public List<EN.Produccion> Producciones()
        {
            List<EN.Produccion> ListaPT = new List<EN.Produccion>();

            var query = db.Produccion.ToList();


            foreach (BR.Produccion other in query)
            {

                EN.Produccion p = new EN.Produccion();
                //Mapeo y calculos
                TimeSpan dias = other.Turnos.fin - other.Turnos.inicio;
                p.conductor = other.Turnos.Conductor.nombre.ToUpper() + " " + other.Turnos.Conductor.apellido.ToUpper();
                p.dias = dias.Days;
                p.idTurno = other.idTurno;
                p.placa = other.Turnos.placaTaxi;
                p.producido = other.producido;
                ListaPT.Add(p);

            }

            return ListaPT;

        }

        public EN.Produccion produccion(long id)
        {
            var other = db.Produccion.Where(x => x.id == id).FirstOrDefault();
            EN.Produccion p = new EN.Produccion();

            TimeSpan dias = other.Turnos.fin - other.Turnos.inicio;
            p.conductor = other.Turnos.Conductor.nombre.ToUpper() + " " + other.Turnos.Conductor.apellido.ToUpper();
            p.dias = dias.Days;
            p.idTurno = other.idTurno;
            p.placa = other.Turnos.placaTaxi;
            p.producido = other.producido;

            return p;

        }

        //public List<EN.Produccion> BuscarProduccionPorPlaca(string placa)
        //{
        //    List<EN.Produccion> ListaPT = new List< EN.Produccion > ();

        //    var query =

        //            from p in db.Produccions
        //            join c in db.Conductors on p.id_taxista equals c.id
        //            where p.placa.Equals(placa)
        //            select new
        //            {

        //                id = p.id,
        //                placa = p.placa.ToUpper(),
        //                conductor = c.nombre.ToUpper() + " " + c.apellido.ToUpper(),
        //                inicio = p.inicio,
        //                final = p.final,
        //                valor = p.valor

        //            };

        //    foreach (var other in query.ToList())
        //    {

        //        Querys.ProduccionxTaxis pxt = new Querys.ProduccionxTaxis();

        //        pxt.id = other.id;
        //        TimeSpan resto = other.final - other.inicio;
        //        double total = resto.TotalDays + 1;
        //        pxt.dias = total;
        //        pxt.placa = other.placa;
        //        pxt.conductor = other.conductor;
        //        pxt.inicio = other.inicio;
        //        pxt.final = other.final;
        //        pxt.valor = other.valor;
        //        ListaPT.Add(pxt);

        //    }

        //    return ListaPT;

        //}

        //public List<Querys.ProduccionxTaxis> BuscarProduccionPorConductor(long idConductor)
        //{

        //    List<Querys.ProduccionxTaxis> ListaPT = new List<Querys.ProduccionxTaxis>();

        //    var query =

        //            from p in db.Produccions
        //            join c in db.Conductors on p.id_taxista equals c.id
        //            where p.id_taxista == idConductor
        //            select new
        //            {

        //                id = p.id,
        //                placa = p.placa.ToUpper(),
        //                conductor = c.nombre.ToUpper() + " " + c.apellido.ToUpper(),
        //                inicio = p.inicio,
        //                final = p.final,
        //                valor = p.valor

        //            };

        //    foreach (var other in query.ToList())
        //    {

        //        Querys.ProduccionxTaxis pxt = new Querys.ProduccionxTaxis();

        //        pxt.id = other.id;
        //        TimeSpan resto = other.final - other.inicio;
        //        double total = resto.TotalDays + 1;
        //        pxt.dias = total;
        //        pxt.placa = other.placa;
        //        pxt.conductor = other.conductor;
        //        pxt.inicio = other.inicio;
        //        pxt.final = other.final;
        //        pxt.valor = other.valor;
        //        ListaPT.Add(pxt);

        //    }

        //    return ListaPT;

        //}

        public long id(int idc)
        {

            return db.Produccion.Where(x => x.Turnos.idConductor == idc).FirstOrDefault().id;

        }

    }
}
¿Que voy hacer?

Ajustar todo y tener una version presentable del proyecto
Planear el sprint 9 y preentrega

¿Que problemas se ha tenido?
  • Sin inconvenietes a la hora de hacer merge cpn la rama de deresarrollo y la master