public async Task <ActionResult> CambiarTurno(int?turnoAntesId, int?turnoDespuesId, int?pacienteId) { if (turnoAntesId == null || turnoDespuesId == null || pacienteId == null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "No existe la ruta.", MessageType = GenericMessages.warning }; return(RedirectToAction("Index")); } Turno turnoAntes = await db.Turnos.FindAsync(turnoAntesId); Turno turnoDespues = await db.Turnos.FindAsync(turnoDespuesId); Paciente paciente = await db.Pacientes.FindAsync(pacienteId); if (turnoAntes == null || turnoDespues == null || paciente == null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "No existe la ruta.", MessageType = GenericMessages.warning }; return(RedirectToAction("Index")); } TurnoCambiarView turnoAntesYDespues = new TurnoCambiarView(); turnoAntesYDespues.TurnoAntes = turnoAntes; turnoAntesYDespues.TurnoDespues = turnoDespues; ViewBag.TieneOS = turnoAntes.TieneOS; return(View(turnoAntesYDespues)); }
public async Task <ActionResult> CambiarTurno(TurnoCambiarView turno) { try { if (ModelState.IsValid) { Turno turnoAntes = await db.Turnos.FindAsync(turno.TurnoAntes.Id); Turno turnoDespues = await db.Turnos.FindAsync(turno.TurnoDespues.Id); if (turnoAntes == null || turnoDespues == null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "No se encontró turno.", MessageType = GenericMessages.danger }; return(RedirectToAction("Index")); } turnoDespues.ObraSocialId = turnoAntes.Paciente.ObraSocial.Id; // lo saco del turno anterior turnoDespues.PacienteId = turnoAntes.PacienteId; // lo saco del turno anterior turnoDespues.Estado = Estado.Reservado; turnoDespues.Costo = turnoAntes.Paciente.ObraSocial.Tarifas.Where(t => t.EspecialidadId == turnoDespues.EspecialidadId).FirstOrDefault().Tarifa; db.Entry(turnoDespues).State = EntityState.Modified; await db.SaveChangesAsync(); turnoAntes.ObraSocialId = null; turnoAntes.PacienteId = null; turnoAntes.Estado = Estado.Disponible; turnoAntes.Costo = null; turnoAntes.Sobreturno = null; turnoAntes.TieneObraSocial = null; db.Entry(turnoAntes).State = EntityState.Modified; await db.SaveChangesAsync(); TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "Turno cambiado exitosamante.", MessageType = GenericMessages.success }; return(RedirectToAction("TurnosReservadosInicio")); } else { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "Error al validar los campos.", MessageType = GenericMessages.danger }; return(View(turno)); } } catch (Exception ex) { var err = $"Error al cambiar turno: {ex.Message}"; TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = err, MessageType = GenericMessages.danger }; return(View(turno)); } }