public bool DeletePermission(int toggleId, Guid serviceId)
        {
            if (serviceId == Guid.Empty)
            {
                return(false);
            }

            try
            {
                ToggleServicePermissionModel toggleServicePermission = TogglerContext.ToggleServicePermissions
                                                                       .Where(p => p.ToggleId == toggleId && p.ServiceId == serviceId).FirstOrDefault();

                if (toggleServicePermission != null)
                {
                    TogglerContext.ToggleServicePermissions.Attach(toggleServicePermission);
                    TogglerContext.ToggleServicePermissions.Remove(toggleServicePermission);
                    TogglerContext.SaveChanges();

                    return(true);
                }
            }
            catch (Exception ex)
            {
                Logger.LogFile($"Failed to delete the ToggleServicePermission: {ex.Message}");
            }

            return(false);
        }
        public bool CreatePermission(ToggleServicePermissionModel toggleServicePermissionModel)
        {
            if (toggleServicePermissionModel == null)
            {
                return(false);
            }

            try
            {
                ToggleModel  toggleModel  = ToggleRepository.GetToggle(toggleServicePermissionModel.ToggleId);
                ServiceModel serviceModel = ServiceRepository.GetService(toggleServicePermissionModel.ServiceId);

                if (toggleModel != null && serviceModel != null)
                {
                    TogglerContext.ToggleServicePermissions.Add(toggleServicePermissionModel);
                    TogglerContext.SaveChanges();

                    return(true);
                }
            }
            catch (Exception ex)
            {
                Logger.LogFile($"Failed to create the ToggleServicePermission: {ex.Message}");
            }

            return(false);
        }
        public bool CreatePermission(ToggleServicePermissionRequestModel toggleServiceRequestModel)
        {
            if (toggleServiceRequestModel == null || toggleServiceRequestModel.ServiceId == Guid.Empty)
            {
                return(false);
            }

            try
            {
                if (toggleServiceRequestModel.State == State.ALLOWED ||
                    toggleServiceRequestModel.State == State.BLOCKED ||
                    toggleServiceRequestModel.State == State.OVERRIDE)
                {
                    ToggleServicePermissionModel toggleServicePermissionModel = new ToggleServicePermissionModel()
                    {
                        ToggleId       = toggleServiceRequestModel.ToggleId,
                        ServiceId      = toggleServiceRequestModel.ServiceId,
                        State          = toggleServiceRequestModel.State,
                        OverridenValue = toggleServiceRequestModel.OverridenValue
                    };

                    return(ToggleServicePermissionRepository.CreatePermission(toggleServicePermissionModel));
                }
            }
            catch (Exception ex)
            {
                Logger.LogFile($"Error creating a ToggleServicePermission: {ex.Message}");
            }

            return(false);
        }
        public bool UpdatePermission(ToggleServicePermissionModel toggleServicePermissionModel)
        {
            if (toggleServicePermissionModel == null || toggleServicePermissionModel.ServiceId == Guid.Empty)
            {
                return(false);
            }

            try
            {
                ToggleServicePermissionModel toggleService = TogglerContext.ToggleServicePermissions
                                                             .Find(toggleServicePermissionModel.ToggleId, toggleServicePermissionModel.ServiceId);

                if (toggleService != null)
                {
                    toggleService.State          = toggleServicePermissionModel.State;
                    toggleService.OverridenValue = toggleServicePermissionModel.OverridenValue;

                    TogglerContext.ToggleServicePermissions.Update(toggleService);
                    TogglerContext.SaveChanges();

                    return(true);
                }
            }
            catch (Exception ex)
            {
                Logger.LogFile($"Failed to update the ToggleServicePermission: {ex.Message}");
            }

            return(false);
        }
        public ToggleServicePermissionResponseModel GetToggleServicePermission(int toggleId, Guid serviceId)
        {
            if (serviceId == Guid.Empty)
            {
                return(null);
            }

            ToggleServicePermissionResponseModel toggleServicePermissionResponseModel;

            try
            {
                ToggleServicePermissionModel toggleServicePermissionModel = ToggleServicePermissionRepository.
                                                                            GetToggleServicePermission(toggleId, serviceId);

                if (toggleServicePermissionModel != null)
                {
                    toggleServicePermissionResponseModel = new ToggleServicePermissionResponseModel()
                    {
                        ToggleId       = toggleServicePermissionModel.ToggleId,
                        ServiceId      = toggleServicePermissionModel.ServiceId,
                        State          = toggleServicePermissionModel.State,
                        OverridenValue = toggleServicePermissionModel.OverridenValue
                    };

                    return(toggleServicePermissionResponseModel);
                }
            }
            catch (Exception ex)
            {
                Logger.LogFile($"Error getting a ToggleServicePermission: {ex.Message}");
            }

            return(null);
        }