Exemplo n.º 1
0
        public JsonResult SavePermission(ValueList details)
        {
            if (details.IsEmpty)
            {
                return(Json("ok"));
            }

            var model = Session.Get <PermissionModel>(Strings.CachedMODELPermissions);

            if (model == null)
            {
                return(Json("err"));
            }

            var ctx1 = PTFContext.Current;
            var ctx2 = PTFReportsContext.Current;

            var user = ctx2.UserDetails.First(ud => ud.Ud_id == model.UserID);

            //Add
            if (details.Value.Contains('A'))
            {
                foreach (string id in details.Split <string>('A'))
                {
                    var ids    = id.Split('_');
                    int isoId  = ids[0].Cast2 <int>();
                    int compId = ids[1].Cast2 <int>();

                    if (ids[2] == "all")
                    {
                        ctx2.Permissions.RemoveAllWhere(p => p.UserID == model.UserID && p.IsoID == isoId && p.HoID == compId);

                        foreach (var br in ctx1.Branches.Where(b => b.br_iso_id == model.ISOID && b.br_ho_id == compId))
                        {
                            ctx2.AddToPermissions(new Permission()
                            {
                                UserID     = model.UserID,
                                IsoID      = br.br_iso_id,
                                HoID       = br.br_ho_id,
                                RetailerID = br.br_id,
                            });
                        }
                    }
                    else
                    {
                        int branchId = ids[2].Cast2 <int>();
                        Permission.AddSafe(model.UserID, model.ISOID, compId, branchId);
                    }
                }
            }
            //Remove
            else
            {
                foreach (string id in details.Split <string>('R'))
                {
                    var ids    = id.Split('_');
                    int isoId  = ids[0].Cast2 <int>();
                    int compId = ids[1].Cast2 <int>();

                    if (ids[2] == "all")
                    {
                        ctx2.Permissions.RemoveAllWhere(
                            p => p.UserID == model.UserID &&
                            p.IsoID == isoId &&
                            p.HoID == compId);
                    }
                    else
                    {
                        int branchId = ids[2].Cast2 <int>();
                        ctx2.Permissions.RemoveFirst(
                            p => p.UserID == model.UserID &&
                            p.IsoID == isoId &&
                            p.HoID == compId &&
                            p.RetailerID == branchId);
                    }
                }
            }
            ctx2.SaveChanges();

            ViewData["SelectedBranches"] = Branch.FindForPermissions(user);

            var result = this.RenderPartialToString("SelectedBrachesPartial", model);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }