public async Task <IActionResult> Edit(int id, [Bind("Id,Expected_date_of_delivery,ParcelsId")] Trackings trackings)
        {
            if (id != trackings.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(trackings);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TrackingsExists(trackings.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ParcelsId"] = new SelectList(_context.Set <Parcels>(), "Id", "Content_type", trackings.ParcelsId);
            return(View(trackings));
        }
        public async Task <IActionResult> Create([Bind("Id,Expected_date_of_delivery,ParcelsId")] Trackings trackings)
        {
            if (ModelState.IsValid)
            {
                _context.Add(trackings);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ParcelsId"] = new SelectList(_context.Set <Parcels>(), "Id", "Content_type", trackings.ParcelsId);
            return(View(trackings));
        }
Exemplo n.º 3
0
        private void btnConsultar_Click(object sender, EventArgs e)
        {
            //Variables
            string          strMsgNoTieneTurno = "INEXISTENTE - No existe turno para el dia de hoy";
            string          strMsgTurnoVencido = "TURNO VENCIDO - Su Turno a pasado el tiempo maximo de espera";
            string          strDNI             = txtDni.Text.Trim();
            CallCenterTurns callCenterTurn;
            int?            NumeroSecuencia;
            DateTime        startDateTime    = DateTime.Today;                         //Today at 00:00:00
            DateTime        endDateTime      = DateTime.Today.AddDays(1).AddTicks(-1); //Today at 23:59:59
            DateTime        startDateTimeAux = DateTime.Today;
            int             EstadoInicial    = db.Status.Where(x => x.Orden == 1).Select(x => x.Id).FirstOrDefault();
            bool            boTurnoVencido   = false;

            //Con el DNI me fijo si existe la persona
            //Verifico con los datos que vienen del CallCenter
            List <Settings> setting = db.Settings.ToList();

            callCenterTurn = db.CallCenterTurns.Where(x => x.DNI == strDNI && x.FechaTurno >= startDateTime && x.FechaTurno <= endDateTime).FirstOrDefault();
            int?TiempoMaximoEspera    = setting.Where(x => x.Clave == "TIEMPO_MAXIMO_ESPERA").FirstOrDefault()?.Numero1;
            int?DiasDeCorridoDeEspera = setting.Where(x => x.Clave == "DIAS_DE_CORRIDO_DE_ESPERA").FirstOrDefault()?.Numero1;

            if (DiasDeCorridoDeEspera != null)
            {
                startDateTimeAux = DateTime.Today.AddDays(-1 * (DiasDeCorridoDeEspera.Value));
            }

            if (callCenterTurn == null)
            {
                //No tiene turno
                //Puede ser que se le haya asignada turno en dias anteriores
                //Pregunto si desea que se le de turno igual

                if (DiasDeCorridoDeEspera != null)
                {
                    callCenterTurn = db.CallCenterTurns.Where(x => x.DNI == strDNI && x.FechaTurno >= startDateTimeAux && x.FechaTurno <= endDateTime).FirstOrDefault();

                    if (callCenterTurn == null)
                    {
                        MessageBox.Show(strMsgNoTieneTurno);
                    }
                    else
                    {
                        string       strMensajeVencido = "El Vecino tenía turno para el dia: " + callCenterTurn.FechaTurno.ToLongDateString() + ". ¿Desea imprimir el turno de todas formas?";
                        DialogResult dialogResult      = MessageBox.Show(strMensajeVencido, "Turno Vencido", MessageBoxButtons.YesNo);
                        if (dialogResult == DialogResult.No)
                        {
                            boTurnoVencido = true;
                            MessageBox.Show(strMsgTurnoVencido);
                        }
                        //else if (dialogResult == DialogResult.No)
                        //{

                        //}
                    }
                }
                else
                {
                    MessageBox.Show(strMsgNoTieneTurno);
                }
            }

            //No utilizo el else porque puede ser cargue callCenterTurn en el medio
            if (callCenterTurn != null && boTurnoVencido == false)

            {
                //si esta asignado vuelvo a emitir el mismo turno
                if (callCenterTurn.Asignado)
                {
                    //Busco El turno
                    Turns turnoold = db.Turns.Where(x => x.CallCenterTurnId == callCenterTurn.Id).FirstOrDefault();
                    //Reeimprimo
                    Imprimir(turnoold);
                    txtDni.Text = "";
                    return;
                }

                //Valido si no se paso de tiempo
                if (TiempoMaximoEspera != null)
                {
                    //Si es 0 no lo tomo en cuenta
                    if (TiempoMaximoEspera != 0)
                    {
                        DateTime fechaMax = callCenterTurn.FechaTurno.AddMinutes(TiempoMaximoEspera.Value);
                        if (DateTime.Now > fechaMax)
                        {
                            string       strMensajeVencido = "El Vecino tenía turno para la hora: " + callCenterTurn.FechaTurno.ToShortTimeString() + ". ¿Desea imprimir el turno de todas formas?";
                            DialogResult dialogResult      = MessageBox.Show(strMensajeVencido, "Turno Vencido", MessageBoxButtons.YesNo);
                            if (dialogResult == DialogResult.No)
                            {
                                //Se le paso el turno
                                MessageBox.Show(strMsgTurnoVencido);
                                txtDni.Text = "";
                                return;
                            }
                        }
                    }
                }

                //Obtengo el tipo de turno
                //La relacion entre como viene y como esta en el sistema
                TypesLicenses typesLicense = db.TypesLicenses.Where(x => x.Referencia == callCenterTurn.TipoTramite).FirstOrDefault();

                if (typesLicense == null)
                {
                    //Le asigno un turno por defecto??
                    typesLicense = db.TypesLicenses.Where(x => x.Codigo == "OR").FirstOrDefault();
                }


                //Si paso todas las validaciones

                //Verifico si la persona existe, si no existe la doy de alta en el maestro de personas

                People person = db.People.Where(x => x.Dni == strDNI).FirstOrDefault();
                if (person == null)
                {
                    person = new People
                    {
                        Nombre         = callCenterTurn.Nombre,
                        Apellido       = callCenterTurn.Apellido,
                        Dni            = callCenterTurn.DNI,
                        Barrio         = callCenterTurn.Barrio,
                        Tel_Celular    = callCenterTurn.Tel_Celular,
                        Tel_Particular = callCenterTurn.Tel_Particular
                    };

                    //No le paso fecha de vencimiento de la licencia porque esta pasando mal el webservice

                    //if (!String.IsNullOrEmpty(callCenterTurn.Vencimiento_licencia))
                    //{
                    //    person.Vencimiento_licencia = Convert.ToDateTime(callCenterTurn.Vencimiento_licencia.Substring(0,9));
                    //}

                    db.People.Add(person);
                    db.SaveChanges();
                }

                //Asigno el turno
                callCenterTurn.Asignado        = true;
                db.Entry(callCenterTurn).State = EntityState.Modified;



                //GENERO EL TURNO y Emito el ticket



                if (!db.Turns.Where(x => x.FechaIngreso >= startDateTime && x.FechaIngreso <= endDateTime).Any())
                {
                    NumeroSecuencia = 1;
                }
                else
                {
                    NumeroSecuencia = db.Turns.Where(x => x.FechaIngreso >= startDateTime && x.FechaIngreso <= endDateTime).Max(x => x.Secuencia);
                }

                if (NumeroSecuencia == null)
                {
                    NumeroSecuencia = (typesLicense.NumeroInicial == 0) ? 1 : typesLicense.NumeroInicial;
                }
                else
                {
                    NumeroSecuencia = NumeroSecuencia + 1;
                }


                Turns turn = new Turns
                {
                    FechaIngreso   = DateTime.Now,
                    PersonID       = person.Id,
                    TypesLicenseID = typesLicense.Id,
                    //Armo el codigo del dia
                    Turno            = typesLicense.Codigo + NumeroSecuencia.Value.ToString("0000"),
                    Secuencia        = NumeroSecuencia.Value,
                    FechaTurno       = callCenterTurn.FechaTurno,
                    Enable           = true,
                    CallCenterTurnId = callCenterTurn.Id
                };
                db.Turns.Add(turn);



                db.SaveChanges();


                //Obtengo el primer Sector del Workflow para el tipo de tramite
                List <Workflows> workflows = db.Workflows.Where(x => x.TypesLicenseID == typesLicense.Id).ToList();

                SectorWorkflows sectorWorkflow = db.SectorWorkflows.Where(x => x.Workflows.TypesLicenseID == typesLicense.Id && x.Orden == 1).FirstOrDefault();


                Trackings tracking = new Trackings
                {
                    SectorID      = sectorWorkflow.SectorID,
                    TurnID        = turn.Id,
                    FechaCreacion = DateTime.Now,
                    StatusID      = EstadoInicial,
                    Enable        = true,
                    Orden         = 1
                };

                db.Trackings.Add(tracking);
                db.SaveChanges();



                //Imprimo
                txtDni.Text = "";
                Imprimir(turn);
            }

            txtDni.Text = "";
        }