public ActionResult AddAsset(SystemModel model, HttpPostedFileBase file)
        {
            rs_assets    rs_assets = model.SubAsset;
            JSonResponse result    = new JSonResponse();

            if (AclHelper.hasAccess(User, currentAction, currentController))
            {
                if (ModelState.IsValid)
                {
                    rs_assets system = db.rs_assets.Find(model.System.AssetId);
                    if (system != null)
                    {
                        rs_assets.CreatedDate  = DateTime.Now;
                        rs_assets.UpdatedDate  = DateTime.Now;
                        rs_assets.CurrentLocId = model.CurrentLocId;
                        rs_assets.OriginLocId  = model.OriginLocId;
                        rs_assets.OwnedBy      = model.OwnerId;
                        rs_assets.DivId        = model.DivId;
                        rs_assets.OwnerShipId  = model.OwnerShipId;
                        rs_assets.Availability = model.Availability;
                        string ownerShip = db.rs_ownership.Find(model.OwnerShipId).OwnerType;
                        int    divNo     = db.rs_division.Find(model.DivId).DivisionNo;

                        rs_assets.TrackingNo = AssetHelper.GenerateTrackingNo(ownerShip, divNo,
                                                                              rs_assets.IsSystem, rs_assets.PurchaseDate);

                        if (AssetHelper.IsImage(file))
                        {
                            file.SaveAs(HttpContext.Server.MapPath("~/AssetsImg/")
                                        + file.FileName);
                            rs_assets.ImageLink = file.FileName;
                        }
                        db.rs_assets.Add(rs_assets);
                        db.SaveChanges();

                        rs_assets_rel rel = new rs_assets_rel();
                        rel.AssetId = rs_assets.AssetId;
                        rel.SysId   = model.System.AssetId;
                        db.rs_assets_rel.Add(rel);
                        db.SaveChanges();

                        return(RedirectToAction("Details", new { id = model.System.AssetId }));
                    }
                    else
                    {
                        return(RedirectToAction("Details", new { id = model.System.AssetId }));
                    }
                }
                else
                {
                    return(RedirectToAction("NotAuthenticated", "Home"));
                }
            }
            else
            {
                return(RedirectToAction("NotAuthenticated", "Home"));
            }
        }
        //[ValidateAntiForgeryToken]
        public ActionResult AttachSubAsset(FormCollection collection)
        {
            int SystemId   = 0;
            int SubAssetId = 0;

            Int32.TryParse(collection.Get("SubAssetId").ToString(), out SubAssetId);
            Int32.TryParse(collection.Get("SystemId").ToString(), out SystemId);

            JSonResponse result = new JSonResponse();

            if (AclHelper.hasAccess(User, currentAction, currentController))
            {
                if (SubAssetId != 0 && SystemId != 0)
                {
                    rs_assets rs_asset = db.rs_assets.Find(SubAssetId);
                    rs_assets system   = db.rs_assets.Find(SystemId);

                    if (system != null && rs_asset != null)
                    {
                        //check and only allow to attach if asset not attached before
                        rs_assets_rel exist = db.rs_assets_rel.FirstOrDefault(x => x.AssetId == SubAssetId && x.SysId == SystemId);
                        if (exist == null)
                        {
                            rs_assets_rel rel = new rs_assets_rel();
                            rel.AssetId = rs_asset.AssetId;
                            rel.SysId   = SystemId;
                            db.rs_assets_rel.Add(rel);
                            db.SaveChanges();
                        }
                        else
                        {
                            TempData["Notification"] = NotificationHelper.Inform("Selected Sub Asset already attached");
                        }

                        return(RedirectToAction("Details", new { id = SystemId }));
                    }
                    else
                    {
                        return(RedirectToAction("Details", new { id = SystemId }));
                    }
                }
                else
                {
                    return(RedirectToAction("NotAuthenticated", "Home"));
                }
            }
            else
            {
                return(RedirectToAction("NotAuthenticated", "Home"));
            }
        }
        // POST: Assets/Delete/5 Delete Relationship
        //[HttpPost, ActionName("DeleteRel")]
        //[ValidateAntiForgeryToken]
        public ActionResult DeleteRel(int id, int parentId)
        {
            if (AclHelper.hasAccess(User, currentAction, currentController))
            {
                rs_assets_rel rel = db.rs_assets_rel.FirstOrDefault(x => x.AssetId == id && x.SysId == parentId);
                db.rs_assets_rel.Remove(rel);
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }
            else
            {
                return(RedirectToAction("NotAuthenticated", "Home"));
            }
        }
        public JsonResult AddAsset2([Bind(Include = "ParentId,Brand,Model,Desciption,SerialNumber,MaterialNo,HardwareOpt,SoftwareOpt,HardwareVer,SoftwareVer,LicenseExpiry,Accessories,Remarks,PurchaseDate,PurchasePrice,DecomDate,DecomReason,Tagged,Damaged,LastCalibrated,CalibrationCycle,CreatedDate,UpdatedDate,CreatedBy,OwnedBy,TrackingNo,ReadyToSell,Availability,OriginLocId,CurrentLocId,PurchasePO,DepreciationFormula,ImageLink,ViewedStats,BookingStats,FeaturedOrder,Featured,IsSystem")] rs_assets rs_assets, int SysId)
        {
            JSonResponse result = new JSonResponse();

            if (AclHelper.hasAccess(User, currentAction, currentController))
            {
                if (ModelState.IsValid)
                {
                    rs_assets system = db.rs_assets.Find(SysId);
                    if (system != null)
                    {
                        db.rs_assets.Add(rs_assets);
                        db.SaveChanges();

                        rs_assets_rel rel = new rs_assets_rel();
                        rel.AssetId = rs_assets.AssetId;
                        rel.SysId   = SysId;
                        db.rs_assets_rel.Add(rel);
                        db.SaveChanges();

                        result.Success = true;
                        result.Message = "Success";
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        result.Success = false;
                        result.Message = "System Asset does not exists!";
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    result.Success = false;
                    result.Message = "Invalid Parameters!";
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                result.Success = false;
                result.Message = "Unauthenticated Access!";
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult AddAssetJson(SystemModel model, HttpPostedFileBase file)
        {
            rs_assets    rs_assets = model.SubAsset;
            JSonResponse result    = new JSonResponse();

            if (AclHelper.hasAccess(User, currentAction, currentController))
            {
                if (ModelState.IsValid)
                {
                    rs_assets system = db.rs_assets.Find(model.System.AssetId);
                    if (system != null)
                    {
                        rs_assets.CurrentLocId = model.CurrentLocId;
                        rs_assets.OriginLocId  = model.OriginLocId;
                        rs_assets.OwnedBy      = model.OwnerId;
                        rs_assets.DivId        = model.DivId;
                        rs_assets.OwnerShipId  = model.OwnerShipId;
                        rs_assets.CreatedDate  = DateTime.Now;
                        rs_assets.UpdatedDate  = DateTime.Now;

                        string ownerShip = db.rs_ownership.Find(model.OwnerShipId).OwnerType;
                        int    divNo     = db.rs_division.Find(model.DivId).DivisionNo;

                        rs_assets.TrackingNo = AssetHelper.GenerateTrackingNo(ownerShip, divNo,
                                                                              rs_assets.IsSystem, rs_assets.PurchaseDate);


                        if (AssetHelper.IsImage(file))
                        {
                            file.SaveAs(HttpContext.Server.MapPath("~/AssetsImg/")
                                        + file.FileName);
                            rs_assets.ImageLink = file.FileName;
                        }
                        db.rs_assets.Add(rs_assets);
                        db.SaveChanges();

                        rs_assets_rel rel = new rs_assets_rel();
                        rel.AssetId = rs_assets.AssetId;
                        rel.SysId   = model.System.AssetId;
                        db.rs_assets_rel.Add(rel);
                        db.SaveChanges();

                        result.Success = true;
                        result.Message = "Success";
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        result.Success = false;
                        result.Message = "System Asset does not exists!";
                        return(Json(result, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    result.Success = false;
                    result.Message = "Invalid Parameters!";
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                result.Success = false;
                result.Message = "Unauthenticated Access!";
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
        }