public Boolean UpdateFeatureProfile(String oldFeatureName, String newFeatureName, String remarks)
 {
     using (DockerDBEntities dockerDBEntities = new DockerDBEntities()) {
         FeatureProfile fp = (from p in dockerDBEntities.FeatureProfiles
                              where p.FeatureName == oldFeatureName
                              select p).FirstOrDefault();
         if (fp != null)
         {
             fp.FeatureName    = newFeatureName;
             fp.FeatureRemarks = remarks;
             fp.LastUpdateDate = DateTime.Now;
             dockerDBEntities.SaveChanges();
             return(true);
         }
     }
     return(false);
 }
 public Boolean InsertNewFeatureProfile(String featureName, String remarks)
 {
     using (DockerDBEntities dockerDBEntities = new DockerDBEntities()) {
         FeatureProfile fp = (from p in dockerDBEntities.FeatureProfiles
                              where p.FeatureName == featureName
                              select p).FirstOrDefault();
         if (fp == null)
         {
             fp                = new FeatureProfile();
             fp.FeatureId      = Guid.NewGuid();
             fp.FeatureName    = featureName;
             fp.FeatureRemarks = remarks;
             fp.LastUpdateDate = DateTime.Now;
             dockerDBEntities.FeatureProfiles.Add(fp);
             dockerDBEntities.SaveChanges();
             return(true);
         }
         return(false);
     }
 }
 public Boolean DeleteFeatureProfile(String featureName)
 {
     using (DockerDBEntities dockerDBEntities = new DockerDBEntities()) {
         FeatureProfile fp = (from p in dockerDBEntities.FeatureProfiles
                              where p.FeatureName == featureName
                              select p).FirstOrDefault();
         if (fp != null)
         {
             List <FeatureAccessProfile> accessProfilesList = (from p in dockerDBEntities.FeatureAccessProfiles
                                                               where p.FeatureProfile.FeatureName == featureName select p).ToList();
             foreach (var item in accessProfilesList)
             {
                 dockerDBEntities.FeatureAccessProfiles.Remove(item);
             }
             dockerDBEntities.FeatureProfiles.Remove(fp);
             dockerDBEntities.SaveChanges();
             return(true);
         }
     }
     return(false);
 }
        public async Task <IActionResult> Edit(string sourceName, FeatureProfileViewModel model, string submit)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageTenantFeatureProfiles))
            {
                return(Forbid());
            }

            var featureProfilesDocument = await _featureProfilesManager.LoadFeatureProfilesDocumentAsync();

            if (!featureProfilesDocument.FeatureProfiles.ContainsKey(sourceName))
            {
                return(NotFound());
            }

            List <FeatureRule> featureRules = null;

            if (ModelState.IsValid)
            {
                if (String.IsNullOrWhiteSpace(model.Name))
                {
                    ModelState.AddModelError(nameof(FeatureProfileViewModel.Name), S["The name is mandatory."]);
                }
                else if (!String.Equals(model.Name, sourceName, StringComparison.OrdinalIgnoreCase) &&
                         featureProfilesDocument.FeatureProfiles.ContainsKey(model.Name))
                {
                    ModelState.AddModelError(nameof(FeatureProfileViewModel.Name), S["A feature profile with the same name already exists."]);
                }

                if (String.IsNullOrEmpty(model.FeatureRules))
                {
                    ModelState.AddModelError(nameof(FeatureProfileViewModel.FeatureRules), S["The feature rules are mandatory."]);
                }
                else
                {
                    try
                    {
                        featureRules = JsonConvert.DeserializeObject <List <FeatureRule> >(model.FeatureRules);
                    }
                    catch (Exception)
                    {
                        ModelState.AddModelError(nameof(FeatureProfileViewModel.FeatureRules), S["Invalid json supplied."]);
                    }
                }
            }

            if (ModelState.IsValid)
            {
                var featureProfile = new FeatureProfile
                {
                    FeatureRules = featureRules
                };

                await _featureProfilesManager.RemoveFeatureProfileAsync(sourceName);

                await _featureProfilesManager.UpdateFeatureProfileAsync(model.Name, featureProfile);

                if (submit == "SaveAndContinue")
                {
                    return(RedirectToAction(nameof(Edit), new { name = model.Name }));
                }
                else
                {
                    return(RedirectToAction(nameof(Index)));
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }