public bool SaveEspecialidad(MedicoEspecialidadViewModel entity) { try { Especialidad e1 = new Especialidad(); e1.EspecialidadName = entity.EspecialidadName; context.Add(e1); context.SaveChanges(); MedicoEspecialidad medicoespe1 = new MedicoEspecialidad(); medicoespe1.MedicoId = entity.MedicoId; medicoespe1.Medico = context.medicos.Find(entity.MedicoId); medicoespe1.EspecialidadId = context.especialidades.OrderByDescending(o => o.EspecialidadId).First().EspecialidadId; medicoespe1.Especialidad = e1; context.Add(medicoespe1); context.SaveChanges(); } catch (System.Exception) { return(false); } return(true); }
public async Task <ActionResult> Create(MedicoEspecialidadViewModel medicoEspecialidad) { //creamos el ámbito de la transacción using (var dbContextTransaction = db.Database.BeginTransaction()) { try { if (!ModelState.IsValid) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "El modelo no es válido", MessageType = GenericMessages.danger }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre"); return(View(medicoEspecialidad)); } Medico existeMedico = await db.Medicos.FirstOrDefaultAsync(t => t.UserName == medicoEspecialidad.Medico.UserName); if (existeMedico != null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "No se puede agregar el registro, El campo E-mail ya existe.", MessageType = GenericMessages.danger }; ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre"); return(View(medicoEspecialidad)); } // Crear nuevo médico db.Medicos.Add(medicoEspecialidad.Medico); await db.SaveChangesAsync(); Medico medicoCreado = await db.Medicos.FirstOrDefaultAsync(t => t.UserName == medicoEspecialidad.Medico.UserName); Especialidad especialidad = await db.Especialidades.FirstOrDefaultAsync(t => t.Id == medicoEspecialidad.DuracionTurnoEspecialidad.EspecialidadId); if (medicoCreado == null || especialidad == null) { TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "Error al crear nuevo médico.", MessageType = GenericMessages.danger }; //hacemos rollback dbContextTransaction.Rollback(); ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre"); return(View(medicoEspecialidad)); } DuracionTurnoEspecialidad duracionTurnoEspecialidad = new DuracionTurnoEspecialidad { MedicoId = medicoCreado.Id, EspecialidadId = especialidad.Id, Duracion = medicoEspecialidad.DuracionTurnoEspecialidad.Duracion }; db.DuracionTurnoEspecialidades.Add(duracionTurnoEspecialidad); await db.SaveChangesAsync(); // Crear usuario y asignar rol var store = new UserStore <ApplicationUser>(db); var userManager = new UserManager <ApplicationUser>(store); var user = new ApplicationUser { UserName = medicoEspecialidad.Medico.UserName }; userManager.Create(user, "Medico1234@"); userManager.AddToRole(user.Id, "Medico"); TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = "Registro agregado exitosamente.", MessageType = GenericMessages.success }; //Hacemos commit de todos los datos dbContextTransaction.Commit(); return(RedirectToAction("Index")); } catch (Exception ex) { var err = $"No se puede agregar el registro: {ex.Message}"; TempData[Application.MessageViewBagName] = new GenericMessageViewModel { Message = err, MessageType = GenericMessages.danger }; //hacemos rollback si hay excepción dbContextTransaction.Rollback(); ViewBag.EspecialidadId = new SelectList(db.Especialidades, "Id", "Nombre"); return(View(medicoEspecialidad)); } } }
public bool SaveEspecialidad(MedicoEspecialidadViewModel entity) { return(medicoespecialidadRepository.SaveEspecialidad(entity)); }