Esempio n. 1
0
        public async Task <bool> Add(FavoriteRepositoryVM vm)
        {
            vm.nameRepository = vm.nameRepository?.ToLowerInvariant();
            vm.loginOwner     = vm.loginOwner?.ToLowerInvariant();

            if (!vm.IsNull() && !vm.loginOwner.IsNullOrEmpty() && !vm.nameRepository.IsNullOrEmpty())
            {
                var pathFile   = _repositoryFavoritePath + "favorites.json";
                var fileExists = await Task.FromResult(File.Exists(pathFile)).ConfigureAwait(false);

                IList <FavoriteRepositoryVM> favorites = await Task.FromResult(fileExists
                                                                               ?new List <FavoriteRepositoryVM>(JsonSerializer.Deserialize <FavoriteRepositoryVM[]>(File.ReadAllText(pathFile)))
                                                                               : new List <FavoriteRepositoryVM>(1)
                {
                    vm
                }).ConfigureAwait(false);

                // Valida se o favorito já está contido no json local
                if (!favorites.Any(f => f.loginOwner.Equals(vm.loginOwner) && f.nameRepository.Equals(vm.nameRepository)))
                {
                    favorites.Add(vm);
                }
                else if (fileExists && favorites.Count() == 1) // Favorito já registrado
                {
                    return(true);
                }

                if (!fileExists || !Directory.Exists(_repositoryFavoritePath)) // Caso o diretório não exista, cria.
                {
                    await Task.FromResult(Directory.CreateDirectory(_repositoryFavoritePath)).ConfigureAwait(false);
                }

                string favoritesStr = await Task.FromResult(JsonSerializer.Serialize(favorites)).ConfigureAwait(false);

                await Task.Factory.StartNew(() => File.WriteAllText(pathFile, favoritesStr)).ConfigureAwait(false);

                return(File.Exists(pathFile));
            }
            else
            {
                throw new ArgumentNullException("Informe a entidade Favorita corretamente");
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> Post([FromBody] FavoriteRepositoryVM favoriteVM)
        {
            try
            {
                var result = await _service.Add(favoriteVM).ConfigureAwait(false);

                if (result)
                {
                    return(Ok(result));
                }
                else
                {
                    return(BadRequest("Impossível salvar arquivo"));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }