public ActionResult CreateNewDevice(int?id)
        {
            var serialnumber = db.SerialNumberGenerates.Where(s => s.GenerateID == id).Select(s => s.SerialNumber).DefaultIfEmpty().First();
            CreateDeviceViewModels device = new CreateDeviceViewModels();

            device.SerialNumber     = serialnumber;
            ViewBag.LocationStockID = new SelectList(db.LocationStocks.OrderBy(d => d.LocationName), "LocationID", "LocationName");
            ViewBag.Uri             = System.Web.HttpContext.Current.Request.UrlReferrer;
            return(View(device));
        }
        public ActionResult CreateNewDevice([Bind(Include = "SerialNumber,ModelName,LocationStock,IPAddress,FixAccess,PRNumber,IsAsset,MacAddress")] CreateDeviceViewModels viewmodels, string Uri)
        {
            var sr = viewmodels.SerialNumber.Replace("\r", "").Replace("\n", "").Replace("\t", "").ToString();

            if (viewmodels.IPAddress != null)
            {
                var ip = viewmodels.IPAddress.Replace("\r", "").Replace("\n", "").Replace("\t", "").ToString();
                if (db.Devices.Any(d => d.IPAddress.Trim() == ip.Trim() && d.IPAddress != null && d.IPAddress.Trim() != "DHCP"))
                {
                    ModelState.AddModelError("IPAddress", "IPAddress is Duplicated");
                }
            }

            if (db.Devices.Any(d => d.SerialNumber.Trim() == viewmodels.SerialNumber.Trim()))
            {
                ModelState.AddModelError("SerialNumber", "SerialNumber is Duplicated");
            }

            if (db.Devices.Any(d => d.SerialNumber.Trim() == sr.Trim()))
            {
                ModelState.AddModelError("SerialNumber", "SerialNumber is Duplicated");
            }

            if (ModelState.IsValid)
            {
                Device device = new Device();
                device.StatusID          = 3;
                device.MacAddress        = viewmodels.MacAddress;
                device.SerialNumber      = viewmodels.SerialNumber;
                device.ModelID           = db.Models.Where(b => b.ModelName == viewmodels.ModelName).Select(b => b.ModelID).DefaultIfEmpty().First();
                device.StatusName        = db.Status.Where(b => b.StatusID == device.StatusID).Select(b => b.Status1).DefaultIfEmpty().First();
                device.BrandID           = db.Models.Where(b => b.ModelName == viewmodels.ModelName).Select(b => b.BrandID).DefaultIfEmpty().First();
                device.Specification     = db.Models.Where(b => b.ModelName == viewmodels.ModelName).Select(b => b.Specification).DefaultIfEmpty().First();
                device.DeviceTypeID      = db.Models.Where(b => b.ModelName == viewmodels.ModelName).Select(b => b.DeviceTypeID).DefaultIfEmpty().First();
                device.Type              = db.DeviceTypes.Where(b => b.DeviceTypeID == device.DeviceTypeID).Select(b => b.Type).DefaultIfEmpty().First();
                device.BrandName         = db.Brands.Where(b => b.BrandID == device.BrandID).Select(b => b.BrandName).DefaultIfEmpty().First();
                device.LocationStockID   = viewmodels.LocationStock;
                device.LocationStockName = db.LocationStocks.Where(b => b.LocationID == device.LocationStockID).Select(b => b.LocationName).DefaultIfEmpty().First();
                device.ModelName         = viewmodels.ModelName;
                device.IPAddress         = viewmodels.IPAddress;
                device.PRNumber          = viewmodels.PRNumber;
                device.FixAccess         = viewmodels.FixAccess;
                device.DateCreate        = DateTime.Now;
                device.DateUpdate        = DateTime.Now;
                device.CreateBy          = System.Web.HttpContext.Current.User.Identity.Name;
                device.UpdateBy          = System.Web.HttpContext.Current.User.Identity.Name;
                device.InstockDate       = DateTime.Today;
                if (viewmodels.IsAsset == true)
                {
                    device.Description = "5k";
                }

                RecordInstock recordinstock = new RecordInstock();
                recordinstock.Brand         = db.Brands.Where(b => b.BrandID == device.BrandID).Select(b => b.BrandName).DefaultIfEmpty().First();
                recordinstock.DeviceType    = db.DeviceTypes.Where(b => b.DeviceTypeID == device.DeviceTypeID).Select(b => b.Type).DefaultIfEmpty().First();
                recordinstock.InstockBy     = System.Web.HttpContext.Current.User.Identity.Name;
                recordinstock.DateInstock   = device.DateCreate;
                recordinstock.Model         = device.ModelName;
                recordinstock.SerialNumber  = device.SerialNumber;
                recordinstock.Status        = db.Status.Where(b => b.StatusID == device.StatusID).Select(b => b.Status1).DefaultIfEmpty().First();
                recordinstock.LocationStock = device.LocationStockName;
                if (viewmodels.IsAsset == true)
                {
                    recordinstock.IsFixAsset = "Asset";
                }

                db.Devices.Add(device);
                db.RecordInstocks.Add(recordinstock);
                db.SaveChanges();
                return(RedirectToAction("LastCreate", "Device", new { uri = Uri }));
            }
            ViewBag.LocationStockID = new SelectList(db.LocationStocks.OrderBy(d => d.LocationName), "LocationID", "LocationName", viewmodels.LocationStock);
            return(View(viewmodels));
        }