public ActionResult Delete(int userId, Guid rightId, Guid objectId, ObjectTypes type)
        {
            using (var context = dataContextFactory.CreateByUser())
            {
                var model = new UserObjectRightViewModel()
                {
                    UserId    = userId,
                    RightId   = rightId,
                    ObjectId  = objectId,
                    Type      = type,
                    UserEmail = context.Users.Single(u => u.UserId == userId).Email
                };

                switch (type)
                {
                case ObjectTypes.Vendor:
                    var vendorRight = (from x in context.UserVendorRights
                                       where x.UserId == userId && x.RightId == rightId && x.ObjectId == objectId select x)
                                      .Include(r => r.Vendor)
                                      .FirstOrDefault();

                    model.Name = vendorRight.Vendor.Name;
                    model.Url  = "/Vendor/Details?key=" + objectId;
                    break;

                case ObjectTypes.Customer:
                    var customerRight = (from x in context.UserCustomerRights
                                         where x.UserId == userId && x.RightId == rightId && x.ObjectId == objectId select x)
                                        .Include(r => r.Customer)
                                        .FirstOrDefault();

                    model.Name = customerRight.Customer.Name;
                    model.Url  = "/Customer/Edit?key=" + objectId;
                    break;

                case ObjectTypes.License:
                    var licenseRight = (from x in context.UserLicenseRights
                                        where x.UserId == userId && x.RightId == rightId && x.ObjectId == objectId select x)
                                       .Include(r => r.License)
                                       .Include(r => r.License.Sku)
                                       .FirstOrDefault();

                    model.Name = licenseRight.License.Sku.SkuCode;
                    model.Url  = "/License/Details?key=" + objectId;
                    break;

                default:
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                return(View(model));
            }
        }
        public ActionResult Delete(UserObjectRightViewModel model)
        {
            using (var context = dataContextFactory.CreateByUser())
            {
                var userId   = model.UserId;
                var rightId  = model.RightId;
                var objectId = model.ObjectId;

                switch (model.Type)
                {
                case ObjectTypes.Vendor:
                    var vendorRight = (from x in context.UserVendorRights
                                       where x.UserId == userId && x.RightId == rightId && x.ObjectId == objectId
                                       select x)
                                      .Include(r => r.Vendor)
                                      .FirstOrDefault();

                    context.UserVendorRights.Remove(vendorRight);
                    break;

                case ObjectTypes.Customer:
                    var customerRight = (from x in context.UserCustomerRights
                                         where x.UserId == userId && x.RightId == rightId && x.ObjectId == objectId
                                         select x)
                                        .Include(r => r.Customer)
                                        .FirstOrDefault();

                    context.UserCustomerRights.Remove(customerRight);
                    break;

                case ObjectTypes.License:
                    var licenseRight = (from x in context.UserLicenseRights
                                        where x.UserId == userId && x.RightId == rightId && x.ObjectId == objectId
                                        select x)
                                       .Include(r => r.License)
                                       .Include(r => r.License.Sku)
                                       .FirstOrDefault();

                    context.UserLicenseRights.Remove(licenseRight);
                    break;

                default:
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                context.SaveChanges();

                return(RedirectToAction("Edit", "Account", new { id = userId }));
            }
        }