public TurnoAdd(TurnoView view) { InitializeComponent(); MostrarTitulo(); LlenarComboMedico(); LlenarComboPaciente(); ObjEqual(view); }
private void ObjEqual(TurnoView view) { if (view != null) { this.id = view.idPaciente; txtDetalle.Text = view.detalles; txtHora.Text = view.hora; dpFecha.Value = view.fecha; cbMedico.SelectedValue = view.idMedico; cbPaciente.SelectedValue = view.idPaciente; } }
private void DataListado_CellContentClick(object sender, DataGridViewCellEventArgs e) { string msj; TurnoView item = dataListado.Rows[e.RowIndex].DataBoundItem as TurnoView; if (e.ColumnIndex == 0) { DialogResult result = MessageBox.Show("Realmete desea eliminar el registro", "Clinica", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.Yes) { msj = obj.Delete(item.idPaciente); MessageBox.Show(msj, "Clinica", MessageBoxButtons.OK, MessageBoxIcon.Information); } } if (e.ColumnIndex == 1) { TurnoAdd frm = new TurnoAdd(item); frm.ShowDialog(); } Mostrar(); }
public async Task <ActionResult> Create([Bind(Include = "Id,MedicoId,EspecialidadId,FechaDesde,FechaHasta")] TurnoView turnoView) { if (ModelState.IsValid) { if (turnoView.FechaDesde.Date > turnoView.FechaHasta.Date) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "La fecha Desde no puede ser mayor que la fecha Hasta.", MessageType = GenericMessages.warning }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre", turnoView.EspecialidadId); ViewBag.MedicoId = new SelectList(db.Medicos, "Id", "Nombre", turnoView.MedicoId); return(View(turnoView)); } var hoy = DateTime.Now.Date; if (turnoView.FechaDesde.Date < hoy) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "La fecha Desde no puede ser menor que la fecha de Hoy.", MessageType = GenericMessages.warning }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre", turnoView.EspecialidadId); ViewBag.MedicoId = new SelectList(db.Medicos, "Id", "Nombre", turnoView.MedicoId); return(View(turnoView)); } var duracion = db.DuracionTurnoEspecialidades.Where(t => t.MedicoId == turnoView.MedicoId && t.EspecialidadId == turnoView.EspecialidadId).FirstOrDefault(); if (duracion == null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "No existe la especialidad del Médico.", MessageType = GenericMessages.warning }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre", turnoView.EspecialidadId); ViewBag.MedicoId = new SelectList(db.Medicos, "Id", "Nombre", turnoView.MedicoId); return(View(turnoView)); } var diasHorarios = db.AtencionHorarios.Where(t => t.MedicoId == turnoView.MedicoId).ToList(); if (diasHorarios.Count == 0) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "El Médico no tiene Consultorio ni Horario de Atención asignados.", MessageType = GenericMessages.warning }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre", turnoView.EspecialidadId); ViewBag.MedicoId = new SelectList(db.Medicos, "Id", "Nombre", turnoView.MedicoId); return(View(turnoView)); } Turno hayTurnoCreado = await db.Turnos.Where(t => DbFunctions.TruncateTime(t.FechaHora) >= turnoView.FechaDesde && DbFunctions.TruncateTime(t.FechaHora) <= turnoView.FechaHasta && t.MedicoId == turnoView.MedicoId && t.EspecialidadId == turnoView.EspecialidadId).FirstOrDefaultAsync(); if (hayTurnoCreado != null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "Ya hay turnos cargados dentro del rango de fechas elegido.", MessageType = GenericMessages.warning }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre", turnoView.EspecialidadId); ViewBag.MedicoId = new SelectList(db.Medicos, "Id", "Nombre", turnoView.MedicoId); return(View(turnoView)); } //creamos el ámbito de la transacción using (var dbContextTransaction = db.Database.BeginTransaction()) { try { TimeSpan diferencia = turnoView.FechaHasta - turnoView.FechaDesde; for (int i = 0; i < diferencia.TotalDays; i++) { DateTime fechaActual = new DateTime(); fechaActual = turnoView.FechaDesde.AddDays(i); foreach (var diaHorario in diasHorarios) { if ((int)diaHorario.Dia == (int)fechaActual.DayOfWeek) { DateTime horarioActual = diaHorario.HoraInicio; while (horarioActual + TimeSpan.FromMinutes(duracion.Duracion) < diaHorario.HoraFin) { //una consulta Turno turno = new Turno(); turno.MedicoId = turnoView.MedicoId; turno.EspecialidadId = turnoView.EspecialidadId; turno.Estado = Estado.Disponible; turno.FechaHora = fechaActual.Date.AddHours(horarioActual.Hour).AddMinutes(horarioActual.Minute); // Horario que comienza a atender horarioActual += TimeSpan.FromMinutes(duracion.Duracion); // Sumamos minutos turno.FechaHoraFin = fechaActual.Date.AddHours(horarioActual.Hour).AddMinutes(horarioActual.Minute); // OJO: Posible error a futuro... //agregamos el elemento db.Turnos.Add(turno); } } } } //guardamos en la base de datos await db.SaveChangesAsync(); ////hacemos algo extra a manipulación de datos ////como enviar un mail, suponiendo que regresa true si es exitoso //if (!EnviaUnMail()) //{ // //hacemos rollback si fallo el envio del mail // dbContextTransaction.Rollback(); //} //Hacemos commit de todos los datos dbContextTransaction.Commit(); } catch (Exception) { //hacemos rollback si hay excepción dbContextTransaction.Rollback(); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } } TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "Turno creados exitosamante.", MessageType = GenericMessages.success }; return(RedirectToAction("Index")); } ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre", turnoView.EspecialidadId); ViewBag.MedicoId = new SelectList(db.Medicos, "Id", "Nombre", turnoView.MedicoId); return(View(turnoView)); }