コード例 #1
0
        private void ValidateFeature(FeatureDto featureDto, long adminId)
        {
            foreach (var featureName in featureDto.FeatureNameDictionary)
            {
                if (string.IsNullOrEmpty(featureName.Value))
                {
                    throw new ValidationException(ErrorCodes.EmptyFeatureName);
                }
                if (featureName.Value.Length > 300)
                {
                    throw new ValidationException(ErrorCodes.FeatureNameExceedLength);
                }
                if (_featureTranslationService.CheckFeatureNameExist(featureName.Value, featureName.Key, featureDto.FeatureId, adminId)
                    )
                {
                    throw new ValidationException(ErrorCodes.FeatureNameAlreadyExist);
                }
            }
            //foreach (var featureDetail in featureDto.FeatureDetails)
            //{
            //    foreach (var description in featureDetail.DescriptionDictionary)
            //    {
            //        if (string.IsNullOrEmpty(description.Value))
            //            throw new ValidationException(ErrorCodes.EmptyFeatureName);
            //        if (description.Value.Length > 300)
            //            throw new ValidationException(ErrorCodes.FeatureNameExceedLength);
            //        if (_featureDetailTranslationService.CheckFeatureDetailDescriptionExist(description.Value, description.Key, featureDetail.FeatureDetailId, adminId)
            //        ) throw new ValidationException(ErrorCodes.FeatureNameAlreadyExist);

            //    }
            //}
        }
コード例 #2
0
        public void Post()
        {
            try
            {
                using (var server = TestServer.Create <MyStartup>())
                {
                    var dto = new FeatureDto
                    {
                        Id = 0,
                        ClinicalCategoryId = 1,
                        GroupId            = 1,
                        TypeId             = 1,
                        Name        = "feature 9",
                        Description = "F 1",
                        Items       = new List <FeatureItemDto>
                        {
                            new FeatureItemDto {
                                ItemId = 2, FeatureId = 0, UpdatedOn = DateTime.Now, CreatedOn = DateTime.Now
                            }
                        }
                    };

                    HttpResponseMessage response;
                    response = server.HttpClient.PostAsJsonAsync("api/Feature/Items", dto).Result;
                }
            }
            catch (Exception ex)
            {
            }
        }
コード例 #3
0
        public bool IsEnabled(string name, FeatureDto feature)
        {
            var evaluators  = FeatureBeeBuilder.Context.Evaluators;
            var isFulfilled = false;

            foreach (var condition in feature.Conditions)
            {
                var evaluator = evaluators.FirstOrDefault(x => string.Equals(x.Name, condition.Type));
                if (evaluator == null)
                {
                    return(false);
                }

                isFulfilled = evaluator.IsFulfilled(condition.Values.ToArray());
                if (isFulfilled)
                {
                    continue;
                }

                Logger.Log(TraceEventType.Verbose, "Feature {0} does not fulfill condition {1} of type {2}", feature.Name, condition.Values, condition.Type);
                return(false);
            }

            return(isFulfilled);
        }
コード例 #4
0
        public async Task <IActionResult> UpdateFeatureById(long featureId, FeatureDto featureDto)
        {
            try
            {
                if (featureId != featureDto.Id)
                {
                    return(BadRequest());
                }
                var feature = await _featureService.GetFeatureById(featureId);

                if (feature == null)
                {
                    return(NotFound());
                }
                var status = feature.Status;
                _mapper.Map(featureDto, feature);
                feature.Status = status;
                _featureService.UpdateFeature(featureId, feature);
                await _unitOfWork.Save();

                return(NoContent());
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
コード例 #5
0
        public FeatureDto CreateFeature(FeatureDto FeatureDto, int userId, int tenantId, MemoryStream files, string path)
        {
            if (GetFeature(FeatureDto.FeatureId, tenantId) != null)
            {
                return(EditFeature(FeatureDto, userId, tenantId, files, path));
            }
            ValidateFeature(FeatureDto, tenantId);
            var FeatureObj = Mapper.Map <Feature>(FeatureDto);

            foreach (var FeatureName in FeatureDto.TitleDictionary)
            {
                FeatureObj.FeaturesTranslations.Add(new FeatureTranslation
                {
                    Title    = FeatureName.Value,
                    Language = FeatureName.Key,
                });
            }

            FeatureObj.CreationTime  = Strings.CurrentDateTime;
            FeatureObj.CreatorUserId = userId;
            FeatureObj.TenantId      = tenantId;
            _typeTranslationService.InsertRange(FeatureObj.FeaturesTranslations);
            _featureService.Insert(FeatureObj);
            SaveChanges();
            _manageStorage.UploadImage(path + "\\" + "Feature-" + FeatureObj.FeatureId, files, FeatureObj.FeatureId.ToString());
            return(FeatureDto);
        }
コード例 #6
0
        public FeatureDto ConvertFeatureToDto(Feature feature)
        {
            var pointDto = new PointDto(
                feature.Geometry.Coordinate.X,
                feature.Geometry.Coordinate.Y);
            var    address         = feature.Attributes["address"].ToString();
            var    attributesNames = feature.Attributes.GetNames();
            string name            = string.Empty;

            if (attributesNames.Contains("name"))
            {
                name = feature.Attributes["name"].ToString();
            }

            string category = string.Empty;

            if (attributesNames.Contains("category"))
            {
                category = feature.Attributes["category"].ToString();
            }

            var featureDto = new FeatureDto(
                address,
                name,
                category,
                pointDto);

            return(featureDto);
        }
コード例 #7
0
        public void AddFeature(FeatureDto featureDto, long adminId, string path)
        {
            var user = _userService.Find(adminId);

            if (user == null)
            {
                throw new NotFoundException(ErrorCodes.UserNotFound);
            }
            ValidateFeature(featureDto, adminId);

            var feature = Mapper.Map <Feature>(featureDto);

            feature.CreationBy = adminId;
            feature.CreateTime = DateTime.Now;
            feature.IsActive   = true;
            foreach (var featureControlDto in featureDto.FeatureControl)
            {
                feature.FeatureControls.Add(new FeatureControl
                {
                    Control     = featureControlDto.Control,
                    ControlType =
                        featureControlDto.Control == Enums.Control.ListOfText ||
                        featureControlDto.Control == Enums.Control.ListOfTextAndImage ||
                        featureControlDto.Control == Enums.Control.ListOfAvailable
                            ? Enums.ControlType.Single
                            : Enums.ControlType.None,
                    Order    = featureControlDto.Order,
                    IsActive = true
                });
            }
            //foreach (var featureName in featureDto.FeatureNameDictionary)
            //{
            //    feature.FeatureTranslations.Add(new FeatureTranslation
            //    {
            //        FeatureName = featureName.Value,
            //        Language = featureName.Key.ToLower()
            //    });
            //}
            //feature.FeatureDetails.ForEach(x =>
            //{
            //    x.CreationBy = adminId;
            //    x.CreateTime = DateTime.Now;
            //});
            //feature.FeatureDetails.ForEach(x => _featureDetailTranslationService.InsertRange(x.FeatureDetailTranslations));
            //_featureDetailService.InsertRange(feature.FeatureDetails);
            _featureControlService.InsertRange(feature.FeatureControls);
            _featureTranslationService.InsertRange(feature.FeatureTranslations);
            _featureService.Insert(feature);

            foreach (var restaurantDto in featureDto.Restaurants)
            {
                var restaurant = _restaurantService.Find(restaurantDto.RestaurantId);
                restaurant.Feature = feature;
                _restaurantService.Update(restaurant);
            }

            SaveChanges();
            _manageStorage.UploadImage(path + "\\" + "Feature-" + feature.FeatureId, featureDto.Image, feature.FeatureId.ToString());
        }
コード例 #8
0
        public bool IsEnabled(string featureName, FeatureDto feature)
        {
            var godMode = this.godModeFeatures.First(x => x.Key.Equals(featureName, StringComparison.InvariantCultureIgnoreCase));

            Logger.Log(TraceEventType.Verbose, "Feature {0} overwritten by GodMode. Value is {1}", featureName, godMode.Value);

            return(godMode.Value);
        }
コード例 #9
0
        public string BuildFullReport(FeatureDto featureDto)
        {
            StringBuilder sb = new StringBuilder("<html>");

            sb.Append(GetScenarioInfo(featureDto));
            sb.Append("</html>");
            return(sb.ToString());
        }
コード例 #10
0
        public string BuildScenarioReport(FeatureDto featureDto)
        {
            StringBuilder sb = new StringBuilder("<html>");

            sb.Append("<body>");
            sb.Append($"<h2>Feature: {featureDto.Title}<h2>");
            sb.Append($"<p>{featureDto.Description}</p>");
            sb.Append($"<h3>Tags:</h3>");
            sb.Append($"<ol>");
            foreach (string tag in featureDto.Tags)
            {
                sb.Append($"<li>{tag}<li>");
            }
            sb.Append("</ol>");
            sb.Append($"<table>");
            sb.Append($"<tbody>");
            foreach (ScenarioDto scenario in featureDto.Scenarios.Values)
            {
                sb.Append($"<tr>");
                sb.Append(
                    $"<td style='border:1px solid black;'>" +
                    $"<h1><strong>{scenario.Title}</strong></h1>" +
                    $"<table>");
                foreach (StepDto step in scenario.Steps)
                {
                    sb.Append($"<tr><td>{step.Title}</td></tr>");
                }
                sb.Append($"</table>");
                if (scenario.ExecutionStatus == "TestError")
                {
                    sb.Append($"<strong style='color: red;'>Execution Status: {scenario.ExecutionStatus}</strong></br>");
                    sb.Append($"<strong style='color: red;'>Error: {scenario.TestError.Message}</strong></br>");
                }
                else
                {
                    sb.Append($"<strong>Execution Status: {scenario.ExecutionStatus}</strong></br>");
                }
                if (scenario.Screenshots != null)
                {
                    sb.Append($"<p><h1>Screenshots</h1></p>" +
                              $"<p>");
                    foreach (KeyValuePair <string, string> entry in scenario.Screenshots)
                    {
                        sb.Append($"{entry.Key}<img src='{entry.Value}'>");
                    }
                    sb.Append($"</p>");
                }
                sb.Append($"</td>");
                sb.Append($"</tr>");
            }
            sb.Append($"</tbody>");
            sb.Append($"</table>");
            sb.Append("</body>");
            sb.Append("</html>");
            return(sb.ToString());
        }
コード例 #11
0
 protected virtual async Task OnFeatureValueChangedAsync(string value, FeatureDto feature)
 {
     if (feature?.ValueType?.Validator.IsValid(value) == true)
     {
         feature.Value = value;
     }
     else
     {
         await UiMessageService.Warn(L["Volo.Abp.FeatureManagement:InvalidFeatureValue", feature.DisplayName]);
     }
 }
コード例 #12
0
 protected virtual void SetFeatureDepth(List <FeatureDto> features, string providerName, string providerKey,
                                        FeatureDto parentFeature = null, int depth = 0)
 {
     foreach (var feature in features)
     {
         if ((parentFeature == null && feature.ParentName == null) || (parentFeature != null && parentFeature.Name == feature.ParentName))
         {
             feature.Depth = depth;
             SetFeatureDepth(features, providerName, providerKey, feature, depth + 1);
         }
     }
 }
コード例 #13
0
        public static Feature ToFeature(this FeatureDto dto)
        {
            if (dto == null)
            {
                return(null);
            }

            Feature entity = new Feature();

            entity.CopyPropertiesFrom(dto);

            return(entity);
        }
コード例 #14
0
        public static FeatureDto ToFeatureDto(this Feature entity)
        {
            if (entity == null)
            {
                return(null);
            }

            FeatureDto dto = new FeatureDto();

            dto.CopyPropertiesFrom(entity);

            return(dto);
        }
コード例 #15
0
ファイル: FeatureService.cs プロジェクト: periface/SapTam
        private NameValue GetValueName(FeatureDto featureDto)
        {
            if (featureDto.Selected)
            {
                return(new NameValue(featureDto.Name, featureDto.DefaultValue));
            }
            if (!(featureDto.InputType is SingleLineStringInputType))
            {
                return(new NameValue(featureDto.Name, DefaultBooleanValue));
            }
            var feature = _editionManager.FeatureManager.GetOrNull(featureDto.Name);

            return(new NameValue(featureDto.Name, feature.DefaultValue));
        }
コード例 #16
0
        private void ValidateFeature(FeatureDto FeatureDto, long tenantId)
        {
            foreach (var name in FeatureDto.TitleDictionary)
            {
                if (name.Value.Length > 300)
                {
                    throw new ValidationException(ErrorCodes.MenuNameExceedLength);
                }

                if (_typeTranslationService.CheckNameExist(name.Value, name.Key, FeatureDto.FeatureId, tenantId))
                {
                    throw new ValidationException(ErrorCodes.NameIsExist);
                }
            }
        }
コード例 #17
0
        protected virtual Task OnSelectedValueChangedAsync(bool value, FeatureDto feature)
        {
            ToggleValues[feature.Name] = value;

            if (value)
            {
                CheckParents(feature.ParentName);
            }
            else
            {
                UncheckChildren(feature.Name);
            }

            return(Task.CompletedTask);
        }
コード例 #18
0
        private FeatureDto BuildFeatureDto()
        {
            var feature = new FeatureDto
            {
                Title       = "QM-Handbuch",
                SubTitle    = "DEVPERTS GmbH i. Gr.",
                Summary     = "Qualitätsmanagement",
                Url         = Url.RouteUrl(nameof(QualityManagementController) + "." + nameof(QualityManagementController.GetTopLevelElements)),
                Color       = "pumpkin",
                Icon        = "dv-tags",
                Description = "Handbuch für Qualitätsmanagement"
            };

            return(feature);
        }
コード例 #19
0
        private FeatureDto BuildFeatureDto()
        {
            var feature = new FeatureDto
            {
                Title       = "Vacation Process",
                SubTitle    = "Example of d.velop cloud platform integration",
                Summary     = "Extend the d.velop cloud platform",
                Url         = Url.RouteUrl(nameof(VacationRequestController) + "." + nameof(VacationRequestController.GetVacationListView)),
                Color       = "pumpkin",
                Icon        = "dv-tags",
                Description = "Learn to create a d.ecs architecture application for extending the d.velop cloud platform."
            };

            return(feature);
        }
コード例 #20
0
        public async Task <IActionResult> AddFeature(FeatureDto featureDto)
        {
            try
            {
                var feature = _mapper.Map <Feature>(featureDto);
                feature.Status = Status.Authorized;
                _featureService.AddFeature(feature);
                await _unitOfWork.Save();

                return(Ok(feature));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #21
0
        public static void SetUpFeature(FeatureContext featureContext, TestContext testContext)
        {
            var        featureTitle = featureContext.FeatureInfo.Title;
            var        reportPath   = featureTitle.Length > 30 ? featureTitle.Substring(0, 30) : featureTitle;
            FeatureDto featureDto   = new FeatureDto
            {
                Title           = featureTitle,
                Description     = featureContext.FeatureInfo.Description,
                Tags            = featureContext.FeatureInfo.Tags,
                ReportPath      = testContext.OutputFilePath($"{reportPath}.html"),
                ReportDirectory = testContext.UniqueOutputDirectory,
                Scenarios       = new Dictionary <string, ScenarioDto>()
            };

            featureContext.Set(featureDto);
        }
コード例 #22
0
        public ActionResult Index()
        {
            FeatureDto featureDto = new FeatureDto();

            featureDto.feature           = db.ChatFeatureList.ToList();
            featureDto.subfeature        = db.ChatSubFeatureList.ToList();
            featureDto.FeaturesDeveloped = featureDto.subfeature.Where(x => x.DevelopmentComplete).Count();
            if (featureDto.subfeature.Where(x => x.EffortActual > 0).Any())
            {
                featureDto.ActualHrs = featureDto.subfeature.Select(x => x.EffortActual).ToList().Sum();
            }
            else
            {
                featureDto.ActualHrs = 0;
            }

            return(View(featureDto));
        }
コード例 #23
0
        public static FeatureDto ToDto(this Feature feature, bool cascade = true)
        {
            var dto = new FeatureDto
            {
                Name                 = feature.Name,
                Description          = feature.Description,
                WaitingPeriod        = feature.WaitingPeriod,
                IsMentalHealthWaiver = feature.IsMentalHealthWaiver,
                IsActive             = feature.IsActive,
                IsDeleted            = feature.IsDeleted,
                TypeId               = feature.TypeId,
                GroupId              = feature.GroupId,
                ClinicalCategoryId   = feature.ClinicalCategoryId ?? 0,
                ClinicalCategory     = feature.ClinicalCategory?.ToDto(false),
                Items                = feature.Items?.Select(v => v.ToDto()).ToList(),
            };

            ((IData)feature).ToDto((IDataDto)dto);
            return(dto);
        }
コード例 #24
0
        public FeatureDto EditFeature(FeatureDto FeatureDto, int userId, int tenantId, MemoryStream files, string path)
        {
            var FeatureObj = _featureService.Query(x => x.FeatureId == FeatureDto.FeatureId && x.TenantId == tenantId).Select().FirstOrDefault();

            if (FeatureObj == null)
            {
                throw new NotFoundException(ErrorCodes.ProductNotFound);
            }
            ValidateFeature(FeatureDto, tenantId);
            foreach (var FeatureName in FeatureDto.TitleDictionary)
            {
                var FeatureTranslation = FeatureObj.FeaturesTranslations.FirstOrDefault(x => x.Language.ToLower() == FeatureName.Key.ToLower() &&
                                                                                        x.FeatureId == FeatureDto.FeatureId);
                if (FeatureTranslation == null)
                {
                    FeatureObj.FeaturesTranslations.Add(new FeatureTranslation
                    {
                        Title    = FeatureName.Value,
                        Language = FeatureName.Key
                    });
                }
                else
                {
                    FeatureTranslation.Title = FeatureName.Value;
                }
            }

            FeatureObj.LastModificationTime = Strings.CurrentDateTime;
            FeatureObj.LastModifierUserId   = userId;
            FeatureObj.IsDeleted            = FeatureDto.IsDeleted;
            _featureService.Update(FeatureObj);
            SaveChanges();
            if (files != null)
            {
                _manageStorage.UploadImage(path + "\\" + "Feature-" + FeatureObj.FeatureId, files, FeatureObj.FeatureId.ToString());
            }

            return(FeatureDto);
        }
コード例 #25
0
        public static Feature ToDomain(this FeatureDto feature, Feature originalFeature = null)
        {
            //feature.Items?.ForEach(v => v.FeatureId = feature.Id);
            if (originalFeature != null && originalFeature.Id == feature.Id)
            {
                originalFeature.Name                 = feature.Name;
                originalFeature.Description          = feature.Description;
                originalFeature.WaitingPeriod        = feature.WaitingPeriod;
                originalFeature.IsMentalHealthWaiver = feature.IsMentalHealthWaiver;
                originalFeature.IsActive             = feature.IsActive;
                originalFeature.IsDeleted            = feature.IsDeleted;
                originalFeature.TypeId               = feature.TypeId;
                originalFeature.GroupId              = feature.GroupId;
                originalFeature.ClinicalCategoryId   = feature.ClinicalCategoryId != 0 ? feature.ClinicalCategoryId : (int?)null;
                // originalFeature.Items?.Select(v => v.ToDto()).ToList();
                ((IDataDto)feature).ToDomain((IData)originalFeature);
                return(originalFeature);
            }

            var data = new Feature
            {
                Name                 = feature.Name,
                Description          = feature.Description,
                WaitingPeriod        = feature.WaitingPeriod,
                IsMentalHealthWaiver = feature.IsMentalHealthWaiver,
                IsActive             = feature.IsActive,
                IsDeleted            = feature.IsDeleted,
                TypeId               = feature.TypeId,
                GroupId              = feature.GroupId,
                ClinicalCategoryId   = feature.ClinicalCategoryId != 0 ? feature.ClinicalCategoryId : (int?)null,
                //Items = feature.Items?.Select(v => v.ToDomain()).ToList()
            };

            ((IDataDto)feature).ToDomain((IData)data);
            return(data);
        }
コード例 #26
0
 public string AddScenarioToFullReport(string fullReport, FeatureDto featureDto)
 {
     StringBuilder sb = new StringBuilder(fullReport[0..^ 7]);
コード例 #27
0
 public bool IsEnabled(string name, FeatureDto feature)
 {
     Logger.Log(TraceEventType.Verbose, "Feature {0} is 'Released'", feature.Name);
     return(true);
 }
コード例 #28
0
 protected virtual string GetFeatureStyles(FeatureDto feature)
 {
     return($"margin-left: {feature.Depth * 20}px");
 }
コード例 #29
0
 public bool CanEvalute(string name, FeatureDto feature)
 {
     return(feature != null && feature.State == "Released");
 }
コード例 #30
0
 public bool CanEvalute(string name, FeatureDto feature)
 {
     return(feature != null && feature.State == "In Development" && !FeatureBeeBuilder.Context.IsDebugMode);
 }