コード例 #1
0
        public async Task <IActionResult> UpdateCategory(int id, IFormCollection form)
        {
            try
            {
                FactFileCategory category = await _Db.FactFileCategories.FindAsync(id);

                if (category == null)
                {
                    return(NotFound(new ResponseHelper("Something went wrong. If the problem persists, please contact the developers.")));
                }

                string newName = form.Str("name");

                if (string.IsNullOrEmpty(newName))
                {
                    return(BadRequest(new ResponseHelper("The category name must not be null")));
                }

                category.Name = newName;
                await _Db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                _Logger.LogError("Error updating entry name", ex.Message);
                _Logger.LogError(ex.StackTrace);
                return(BadRequest(new ResponseHelper("Something went wrong, please try again in a few minutes.", ex.Message)));
            }
        }
コード例 #2
0
        public async Task <IActionResult> DeleteCategory(int id)
        {
            try
            {
                FactFileCategory category = await _Db.FactFileCategories
                                            .Include(cat => cat.FactFileEntries)
                                            .ThenInclude(entry => entry.Activities)
                                            .Include(cat => cat.FactFileEntries)
                                            .ThenInclude(entry => entry.FactFileEntryImages)
                                            .Include(cat => cat.FactFileEntries)
                                            .ThenInclude(entry => entry.FactFileNuggets)
                                            .Where(cat => cat.Id == id)
                                            .FirstOrDefaultAsync();

                if (category == null)
                {
                    return(NotFound(new ResponseHelper("Something went wrong. If the problem persists, please contact the developers")));
                }

                if (category.FactFileEntries.Any(entry => entry.Activities.Count > 0))
                {
                    StringBuilder message = new StringBuilder("Unable to delete the category as the following entries are linked to guided walk actvities:\n");
                    foreach (FactFileEntry entry in category.FactFileEntries)
                    {
                        if (entry.Activities.Count > 0)
                        {
                            message.AppendLine(entry.PrimaryName + ", ");
                        }
                    }
                    return(BadRequest(new ResponseHelper(message.ToString())));
                }

                // Delete all fact file entry images and nuggets first (can't use cascade delete due to EF Core)
                foreach (FactFileEntry entry in category.FactFileEntries)
                {
                    _Db.RemoveRange(entry.FactFileEntryImages);
                    _Db.RemoveRange(entry.FactFileNuggets);
                }

                _Db.Remove(category);
                await _Db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                _Logger.LogError("Error deleting category", ex.Message);
                _Logger.LogError(ex.StackTrace);
                return(BadRequest(new ResponseHelper("Something went wrong, please try again in a few minutes.", ex.Message)));
            }
        }
コード例 #3
0
        public async Task <IActionResult> GetCategoryDetails(int id)
        {
            try
            {
                FactFileCategory category = await _Db.FactFileCategories
                                            .Include(cat => cat.FactFileEntries)
                                            .ThenInclude(entry => entry.MainImage)
                                            .Where(cat => cat.Id == id)
                                            .FirstOrDefaultAsync();

                if (category == null)
                {
                    return(NotFound(new ResponseHelper("Something went wrong, please contact the developers")));
                }

                return(Ok(new
                {
                    category.Active,
                    category.Id,
                    category.Name,
                    Entries = category.FactFileEntries.OrderBy(entry => entry.PrimaryName).Select(entry => new
                    {
                        entry.Id,
                        entry.PrimaryName,
                        entry.MainImage.Filename,
                        entry.Active
                    })
                }));
            }
            catch (Exception ex)
            {
                _Logger.LogError("Error retrieving category details", ex.Message);
                _Logger.LogError(ex.StackTrace);
                return(BadRequest(new ResponseHelper("Something went wrong, please try again in a few minutes.", ex.Message)));
            }
        }