Пример #1
0
        public override async Task <SavePreferenceResponse> Handle(SavePreferenceRequest request,
                                                                   CancellationToken cancellationToken)
        {
            var isNewCategory = false;

            var preferences = await _cacheProvider.GetPreferences(cancellationToken);

            var preference = _preferenceService.GetPreference(preferences, request.Name);

            if (preference != null)
            {
                return(Response.Failed <SavePreferenceResponse>(new ValidationFailure(nameof(request.Name),
                                                                                      "Preference already exists")));
            }

            var categories = await _cacheProvider.GetCategories(cancellationToken);

            var category = string.IsNullOrWhiteSpace(request.CategoryName)
                ? _categoryService.GetCategory(categories, request.CategoryId)
                : _categoryService.GetCategory(categories, request.CategoryName);

            preference = new Preference
            {
                Name = request.Name,
            };

            if (category == null)
            {
                if (string.IsNullOrWhiteSpace(request.CategoryName))
                {
                    return(Response.Failed <SavePreferenceResponse>(
                               new ValidationFailure(nameof(request.CategoryId),
                                                     "Unable to find category")));
                }

                category = await _categoryService.Save(new Category { Name = request.CategoryName },
                                                       false, false, cancellationToken);

                preference.Category = category;

                isNewCategory = true;
            }
            else
            {
                preference.CategoryId = category.Id;
            }

            preference = await _preferenceService.Save(preference, true, true, cancellationToken);

            return(Response.Success <SavePreferenceResponse>(preference, configure => {
                configure.IsNewCategory = isNewCategory;
                configure.CategoryId = category.Id;
            }));
        }
Пример #2
0
        public IActionResult Post([FromBody] Preferences preference)
        {
            preferenceService.Save(preference);

            return(Ok());
        }