// GET: racks/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            rack rack = db.rack.Find(id);

            if (rack == null)
            {
                return(HttpNotFound());
            }

            // Get contained equipos

            equipo        tempOne     = new equipo();
            List <equipo> equiposRack = new List <equipo>();

            foreach (equipo_por_rack exr in rack.equipo_por_rack)
            {
                tempOne          = new equipo();
                tempOne.idequipo = exr.equipo.idequipo;
                tempOne.altura_u = exr.equipo.altura_u;
                tempOne.s_equipo_numero_serie = exr.equipo.s_equipo_numero_serie + " " + exr.equipo.marca_modelo.modelo + " (" + exr.equipo.altura_u + "U)";
                tempOne.comentarios           = exr.inicia_u.ToString(); //OJO//

                equiposRack.Add(tempOne);
            }
            ViewBag.equiposRack = equiposRack;



            return(View(rack));
        }
        public ActionResult Create([Bind(Include = "idrack,codigo,nombre,ubicacion_fk,orden,altura_u,prof_inch,proveedor_fk")] rack rack)
        {
            if (ModelState.IsValid)
            {
                db.rack.Add(rack);
                db.SaveChanges();
                /*Software por equipo*/
                if (TempData["epr"] != null)
                {
                    foreach (equipo_por_rack _spe in (List <equipo_por_rack>)TempData["epr"])
                    {
                        equipo_por_rack newItem = new equipo_por_rack();

                        newItem.equipo    = null;
                        newItem.equipo_fk = _spe.equipo_fk;
                        newItem.rack_fk   = rack.idrack;
                        // newItem.observaciones = _spe.observaciones;
                        newItem.inicia_u = _spe.inicia_u;


                        db.equipo_por_rack.Add(newItem);
                    }
                }
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.proveedor_fk = new SelectList(db.proveedor, "idproveedor", "nombre_comercial", rack.proveedor_fk);
            ViewBag.ubicacion_fk = new SelectList(db.ubicacion, "idubicacion", "nombre", rack.ubicacion_fk);
            return(View(rack));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            rack rack = db.rack.Find(id);

            db.rack.Remove(rack);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "idrack,codigo,nombre,ubicacion_fk,orden,altura_u,prof_inch")] rack rack)
 {
     if (ModelState.IsValid)
     {
         db.Entry(rack).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ubicacion_fk = new SelectList(db.ubicacion, "idubicacion", "nombre", rack.ubicacion_fk);
     return(View(rack));
 }
        // GET: racks/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            rack rack = db.rack.Find(id);

            if (rack == null)
            {
                return(HttpNotFound());
            }
            return(View(rack));
        }
        // GET: racks/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            rack rack = db.rack.Find(id);

            if (rack == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ubicacion_fk = new SelectList(db.ubicacion, "idubicacion", "nombre", rack.ubicacion_fk);
            return(View(rack));
        }
        // GET: racks/Edit/5
        public ActionResult Edit(int?id)
        {
            TempData["epr"]      = new List <equipo_por_rack>();
            TempData["equipoId"] = id != null?id:0;
            ViewBag.equipos      = GetEquiposSelectList();      // new SelectList(db.equipo, "idequipo", "s_equipo_numero_serie");   //*****//

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            rack rack = db.rack.Find(id);

            if (rack == null)
            {
                return(HttpNotFound());
            }
            ViewBag.proveedor_fk = new SelectList(db.proveedor, "idproveedor", "nombre_comercial", rack.proveedor_fk);
            ViewBag.ubicacion_fk = new SelectList(db.ubicacion, "idubicacion", "nombre", rack.ubicacion_fk);



            // Get contained equipos

            equipo        tempOne     = new equipo();
            List <equipo> equiposRack = new List <equipo>();

            foreach (equipo_por_rack _exr in rack.equipo_por_rack)
            {
                tempOne          = new equipo();
                tempOne.idequipo = _exr.equipo.idequipo;
                tempOne.altura_u = _exr.equipo.altura_u;
                tempOne.s_equipo_numero_serie = _exr.equipo.s_equipo_numero_serie + " " + _exr.equipo.marca_modelo.modelo + " (" + _exr.equipo.altura_u + "U)";
                tempOne.comentarios           = _exr.inicia_u.ToString(); //OJO//

                equiposRack.Add(tempOne);
            }
            ViewBag.equiposRack = equiposRack;

            // Recover current existent values.
            List <equipo_por_rack> exr = rack.equipo_por_rack.ToList();    //OJO//

            TempData["epr"] = exr;


            return(View(rack));
        }
        public ActionResult Edit([Bind(Include = "idrack,codigo,nombre,ubicacion_fk,orden,altura_u,prof_inch,proveedor_fk")] rack rack)
        {
            //*****//  ViewBag.equipos = new SelectList(db.equipo, "idequipo", "s_equipo_numero_serie");   //*****//

            if (ModelState.IsValid)
            {
                //*****// down


                db.Entry(rack).State = EntityState.Modified;
                db.SaveChanges();


                /*Equipo por rack*/
                if (TempData["epr"] != null)
                {
                    using (var dbDinamo = new cloudmanageEntities())
                    {
                        foreach (equipo_por_rack _epr in (List <equipo_por_rack>)TempData["epr"])
                        {
                            if (dbDinamo.equipo_por_rack.Find(_epr.equipo_fk, _epr.rack_fk) != null)
                            {
                                _epr.equipo = null;
                                _epr.rack   = null;


                                if (_epr.observaciones == "DELETED")
                                {
                                    db.Entry(_epr).State = EntityState.Deleted;
                                }
                                else
                                {
                                    db.Entry(_epr).State = EntityState.Modified;
                                }
                            }
                            else
                            {
                                equipo_por_rack newItem = new equipo_por_rack();

                                newItem.equipo    = null;
                                newItem.equipo_fk = _epr.equipo_fk;
                                newItem.rack_fk   = rack.idrack;
                                // newItem.observaciones = _epr.observaciones;
                                newItem.inicia_u = _epr.inicia_u;

                                db.Entry(newItem).State = EntityState.Added;
                            }
                        }
                    }
                }

                //*****// up

                db.SaveChanges();



                // Get contained equipos
                rack racky = db.rack.Find(rack.idrack);          // db.rack.Include(s => s.equipo_por_rack).FirstOrDefault(x => x.idrack == rack.idrack);
                if (racky == null)
                {
                    return(HttpNotFound());
                }
                equipo        tempOne     = new equipo();
                List <equipo> equiposRack = new List <equipo>();
                foreach (equipo_por_rack _exr in racky.equipo_por_rack)
                {
                    _exr.equipo      = db.equipo.Find(_exr.equipo_fk);
                    tempOne          = new equipo();
                    tempOne.idequipo = _exr.equipo.idequipo;
                    tempOne.altura_u = _exr.equipo.altura_u;
                    tempOne.s_equipo_numero_serie = _exr.equipo.s_equipo_numero_serie + " " + _exr.equipo.marca_modelo.modelo + " (" + _exr.equipo.altura_u + "U)";
                    tempOne.comentarios           = _exr.inicia_u.ToString(); //OJO//

                    equiposRack.Add(tempOne);
                }
                ViewBag.equiposRack = equiposRack;


                // Recover current existent values.
                List <equipo_por_rack> exr = racky.equipo_por_rack.ToList();    //OJO//
                TempData["epr"] = exr;


                // GENERAL BEHAVIOR OK   return RedirectToAction("Index");
                // New Behavior
                ViewBag.proveedor_fk = new SelectList(db.proveedor, "idproveedor", "nombre_comercial", rack.proveedor_fk);
                ViewBag.ubicacion_fk = new SelectList(db.ubicacion, "idubicacion", "nombre", rack.ubicacion_fk);
                ViewBag.equipos      = GetEquiposSelectList();
                return(View(rack));
                // End new behavior
            }
            ViewBag.proveedor_fk = new SelectList(db.proveedor, "idproveedor", "nombre_comercial", rack.proveedor_fk);
            ViewBag.ubicacion_fk = new SelectList(db.ubicacion, "idubicacion", "nombre", rack.ubicacion_fk);
            return(View(rack));
        }