public PagoCelular PagoCelularSemanal(Celular celular, DateTime desde, DateTime hasta, Guid operadorId)
        {
            PagoCelular nuevoPago = new PagoCelular();
            nuevoPago.Id = Guid.NewGuid();
            nuevoPago.Desde = desde.Date;
            nuevoPago.Hasta = hasta.Date;
            TimeSpan dias = hasta.Date - desde.Date;
            nuevoPago.Monto = celular.TiposCelulares.Monto * (dias.Days+1);
            nuevoPago.CelularId = celular.Id;
            nuevoPago.FechaAlta = _clock.Now;
            nuevoPago.OperadorAltaId =  operadorId;
            nuevoPago.SucursalAltaId = 1;

            return nuevoPago;
        }
        public PagoCelular AutoPago(Celular _celular, DateTime desde, DateTime hasta, Guid operadorId)
        {
            PagoCelular nuevoPago = new PagoCelular();
            nuevoPago = Uow.PagosCelulares.Listado().Where(p => p.CelularId == _celular.Id).OrderByDescending(pc => pc.FechaAlta).FirstOrDefault();
            var celular = Uow.Celulares.Obtener(c => c.Id == _celular.Id, c => c.TiposCelulares);
            if (nuevoPago == null)
            {
                nuevoPago = PagoCelularInicial(_celular,desde,hasta, operadorId);
            }
            else
            {
                nuevoPago = PagoCelularSemanal(_celular,desde,hasta,operadorId);
            }

            return nuevoPago;
        }
        public PagoCelular PagoCelularInicial(Celular celular,DateTime desde,DateTime hasta, Guid operadorId)
        {
            var _monto = celular.TiposCelulares.MontoInicial; //Ver Contexto
            //monto = celular.TiposCelulares.MontoInicial;
            PagoCelular nuevoPago = new PagoCelular();
            nuevoPago.Id = Guid.NewGuid();
            nuevoPago.Desde = desde;
            TimeSpan dias = hasta - desde;
            nuevoPago.Hasta = hasta;
            nuevoPago.Monto = _monto * (dias.Days+1);
            nuevoPago.CelularId = celular.Id;
            nuevoPago.FechaAlta = _clock.Now;
            nuevoPago.OperadorAltaId = operadorId;
            nuevoPago.SucursalAltaId=1;

            return nuevoPago;
        }
 public void ActualizarMonto(Celular celular)
 {
     Monto = (celular.TiposCelulares.Monto);
 }
        private void BtnAgregarCelular_Click(object sender, EventArgs e)
        {
            if (_celular != null)
            {
                using (var seleccionarCelular = _iFormFactory.Create<FrmCrearEditarCelular>(_celular.Id, ActionFormMode.Edit))
                {
                    seleccionarCelular.EntityAgregada += (o, celular) =>
                    {
                       if (celular.Baja.HasValue)
                        {
                            _celular = null;
                            Celular = "";
                        }

                    };
                    seleccionarCelular.ShowDialog();
                }
            }
            else
            {
                using (var seleccionarCelular =  _iFormFactory.Create<FrmCrearEditarCelular>(Guid.Empty, ActionFormMode.Create))
                {
                    seleccionarCelular.EntityAgregada += (o, celular) =>
                    {

                        _celular = celular;
                        Celular = _celular.TiposCelulares.Tipo;

                    };
                    seleccionarCelular.ShowDialog();
                }
            }
        }
        private void CargarEntidad(Guid choferid)
        {
            if (choferid == default(Guid))
            {
                _chofer = new Chofer();
                _chofer.Id = Guid.NewGuid();
                return;
            }
            else
            {
                _chofer = Uow.Choferes.Obtener(c => c.Id == choferid);
                if (_chofer.MovilId != null)
                    NuevoMovil = false;
            }

            this.DNI = _chofer.Dni;
            this.Apellido = _chofer.Apellido;
            this.Nombre = _chofer.Nombre;
            this.Telefono = _chofer.Telefono;
            this.Email = _chofer.Email;
            this.Activo = _chofer.Activo;
            this.MovilId = _chofer.MovilId;
            if (MovilId == Guid.Empty)
            {
                BtnAgregarMovil.Visible = true;
                DdlMoviles.Enabled = true;
            }

               _celular = Uow.Celulares.Listado(c => c.TiposCelulares).Where((c => c.Id == _chofer.CelularId && !c.Baja.HasValue)).FirstOrDefault();

               if (_celular != null)
               {
                   Celular = _celular.TiposCelulares.Tipo;
               }
               else { BtnAgregarCelular.Visible = true; }
        }
        private void ActualizarChofer(Chofer chofer)
        {
            if (chofer.Activo == false)
            {
                MessageBox.Show("Este chofer no se encuentra activo");
                return;
            }

            _chofer = chofer;

            //Deuda Sistema
            //var deudaTotal = _clienteNegocio.DeudaTotal(_cliente.Id, this.Context.SucursalActual.Id);
            //var deudaVencida = _clienteNegocio.DeudaVencida(_cliente.Id, this.Context.SucursalActual.Id);

            ucEstadoCuentaChofer1.ActualizarChofer(_chofer);
            _celular = Uow.Celulares.Listado(c => c.TiposCelulares).Where(c => c.Id == chofer.CelularId).FirstOrDefault();

            if (_celular != null)
            {
                var cantidadDias = 6;
                ucDetallePagos.esPagoInicial = false;
                ucDetallePagos.DeshabilitarControlesPago();
                if (_celular.FechaUltimoPago == null)
                {
                    cantidadDias = 4;
                    ucDetallePagos.DeshabilitarControlesPagoInicial();
                    ucDetallePagos.esPagoInicial = true;
                }

                DateTime date = _celular.FechaVencimientoPago ?? DateTime.Now.AddDays(-1);
                date = date.Date.AddDays(1);
                DateTime hasta = date.AddDays(cantidadDias);

                ucDetallePagos.FechaDesde = date;
                if (cantidadDias == 4)
                {
                    //ucDetallePagos.FechaHasta = date.AddDays(cantidadDias);
                }
                else
                {
                    DateTime hastaIdeal = _clock.Now.AddDays(3);
                    if (hasta < hastaIdeal)
                    {
                        MessageBox.Show("Atrasado");
                        TimeSpan ts = hastaIdeal - date;
                        cantidadDias = ts.Days;
                        hasta = date.AddDays(cantidadDias);
                        //ucDetallePagos.FechaHasta = hasta;
                    }

                }
                ucDetallePagos.FechaHasta = date.AddDays(cantidadDias);
                GenerarDeudaPago(date,hasta);
                ucHistorialPagosChofer1.HistorialPagosChofer(_chofer.Id);

                ///////
                MontosAFavor();

                ucComentarios.ActualizarComentarios(_chofer.Id);

                ucComentarios._chofer = _chofer.Id;

                ucBuscardorChoferMovil.InhabilitarBusqueda();
            }
            else
            {
                MessageBox.Show("Este chofer no tiene celular asociado");
            }
        }
 private void LimpiarControles()
 {
     _chofer = null;
     _celular = null;
     _pagoCelular = null;
     ucEstadoCuentaChofer1.Limpiar();
     ucBuscardorChoferMovil.LimpiarFiltros();
     ucPagos1.Limpiar();
     ucDetallePagos.Limpiar();
     ucHistorialPagosChofer1.Limpiar();
     ucComentarios.Limpiar();
 }
        private void ActualizarChofer(Chofer chofer)
        {
            if (chofer.Activo == false)
            {
                MessageBox.Show("Este chofer no se encuentra activo");
                return;
            }

            _chofer = chofer;

            //Deuda Sistema
            //var deudaTotal = _clienteNegocio.DeudaTotal(_cliente.Id, this.Context.SucursalActual.Id);
            //var deudaVencida = _clienteNegocio.DeudaVencida(_cliente.Id, this.Context.SucursalActual.Id);
            _celularAnterior = Uow.Celulares.Listado(c => c.TiposCelulares).Where((c => c.Id == _chofer.CelularId && !c.Baja.HasValue)).FirstOrDefault();

            ucEstadoCuentaChofer.ActualizarChofer(_chofer);
            _celularAnterior = Uow.Celulares.Listado(c => c.TiposCelulares).Where(c => c.Id == chofer.CelularId).FirstOrDefault();
            if (_celularAnterior != null)
            {
                CelularAnterior = _celularAnterior.TiposCelulares.Tipo;
            }
            else
            {
                MessageBox.Show("Este chofer no tiene celular asociado");
            }
        }
        private void CambioCelular(Celular celular)
        {
            var chofer = Uow.Choferes.Obtener(c => c.Id == _chofer.Id);
            chofer.CelularId = celular.Id;

            Uow.Choferes.Modificar(chofer);

            _celularAnterior.Baja = _clock.Now;
            Uow.Celulares.Modificar(_celularAnterior);
            var historialAnterior = Uow.ChoferCelulares.Listado().Where(c => c.CelularId == _celularAnterior.Id).FirstOrDefault();
            if (historialAnterior != null)
            {
                historialAnterior.Baja = _clock.Now;
                historialAnterior.FechaModificacion = _clock.Now;
                historialAnterior.OperadorModificacionId = Context.OperadorActual.Id;
                historialAnterior.SucursalModificacionId = Context.SucursalActual.Id;

                Uow.ChoferCelulares.Modificar(historialAnterior);
            }

            //Historial de ChoferCelular
            var historial = new ChoferCelular();
            historial.Choferid = _chofer.Id;
            historial.CelularId = _celularNuevo.Id;
            historial.Alta = _clock.Now;
            historial.FechaAlta = _clock.Now;
            historial.OperadorAltaId = Context.OperadorActual.Id;
            historial.SucursalAltaId = Context.SucursalActual.Id;
            Uow.ChoferCelulares.Agregar(historial);

            //Copiar las fechas de ultimos pagos

            _celularNuevo.FechaProximoPago = _celularAnterior.FechaProximoPago;
            _celularNuevo.FechaUltimoPago = _celularAnterior.FechaUltimoPago;
            _celularNuevo.FechaVencimientoPago = _celularAnterior.FechaVencimientoPago;

            Uow.Celulares.Modificar(_celularNuevo);

            //MontoAFavor
            TimeSpan diferenciaDias = (_celularAnterior.FechaVencimientoPago ?? _clock.Now) - _clock.Now;
            DiferenciaDias = diferenciaDias.Days;

            DiferenciaMonto = _celularAnterior.TiposCelulares.Monto - _celularNuevo.TiposCelulares.Monto;
            MontoAFavor = DiferenciaDias * DiferenciaMonto;

            var montoAFavor = new ChoferMontoFavor();
            montoAFavor.Id = Guid.NewGuid();
            montoAFavor.ChoferId = _chofer.Id;
            montoAFavor.FechaComprobante = _clock.Now;
            montoAFavor.TipoComprobanteId = 1;
            montoAFavor.Concepto = "Cambio de celular";
            montoAFavor.Importe = MontoAFavor;
            montoAFavor.ImpOcupado = 0;
            montoAFavor.FechaAlta = _clock.Now;
            montoAFavor.OperadorAltaId = Context.OperadorActual.Id;
            montoAFavor.SucursalAltaId = Context.SucursalActual.Id;

            Uow.ChoferesMontosFavor.Agregar(montoAFavor);

            //Generar PagoCelular
            var pagoCelular = new PagoCelular();
            pagoCelular.Id = Guid.NewGuid();
            pagoCelular.Desde = _clock.Now;
            pagoCelular.Hasta = _clock.Now;
            pagoCelular.CelularId = _celularNuevo.Id;
            pagoCelular.FechaAlta = _clock.Now;
            pagoCelular.OperadorAltaId = Context.OperadorActual.Id;
            pagoCelular.SucursalAltaId = Context.SucursalActual.Id;
            Uow.PagosCelulares.Agregar(pagoCelular);

            // _celular = celular;
            CelularNuevo = _celularNuevo.TiposCelulares.Tipo;
        }
        private void BtnAgregarCelular_Click(object sender, EventArgs e)
        {
            if (_celularAnterior != null)
            {
                using (var seleccionarCelular = _iFormFactory.Create<FrmCrearEditarCelular>(Guid.Empty, ActionFormMode.Create))
                {
                    seleccionarCelular.EntityAgregada += (o, celular) =>
                    {
                        _celularNuevo = celular;
                        CambioCelular(celular);

                    };
                    seleccionarCelular.ShowDialog();

                }
            }
        }