Skip to content

Instantly share code, notes, and snippets.

@Recelis
Created July 9, 2025 10:54
Show Gist options
  • Save Recelis/cbbec9bafcd3b671537d5d03c4565a04 to your computer and use it in GitHub Desktop.
Save Recelis/cbbec9bafcd3b671537d5d03c4565a04 to your computer and use it in GitHub Desktop.
InMemoryQuestionnaireService a CRUD for an inmemory C# application that I realised I don't need
using LifeTracker.Dto;
using LifeTracker.Models;
namespace LifeTracker.Services;
public class InMemoryQuestionnaireService : IQuestionnaireService
{
List<Questionnaire> _questionnaires { get; } = new List<Questionnaire>();
public InMemoryQuestionnaireService()
{
}
public Task<List<Questionnaire>> GetAllAsync()
{
return Task.FromResult(_questionnaires.ToList());
}
public Task<Questionnaire?> GetAsync(int questionnaireId) => Task.FromResult(_questionnaires.FirstOrDefault(x => x.Id == questionnaireId));
public Task<Questionnaire> CreateAsync(CreateQuestionnaireDto createQuestionnaireDto)
{
List<Questionnaire> questionnaires = _questionnaires.ToList();
int maxId = questionnaires.Any() ? questionnaires.Max(q => q.Id) : 0;
Questionnaire questionnaire = new Questionnaire
{
Id = maxId,
Name = createQuestionnaireDto.Name,
CreatedBy = createQuestionnaireDto.CreatedBy,
};
_questionnaires.Add(questionnaire);
return Task.FromResult<Questionnaire>(questionnaire);
}
public Task<Questionnaire?> UpdateAsync(int id, UpdateQuestionnaireDto updateQuestionnaireDto)
{
int index = _questionnaires.FindIndex(questionnaire => id == questionnaire.Id);
if (index > -1)
{
_questionnaires[index] = new Questionnaire
{
Id = id,
Name = updateQuestionnaireDto.Name,
CreatedBy = _questionnaires[index].CreatedBy
};
return Task.FromResult<Questionnaire?>(_questionnaires[index]);
}
else
{
Console.WriteLine("Failed to find the questionnaire");
return Task.FromResult<Questionnaire?>(null);
}
}
public Task<bool> DeleteAsync(int questionnaireId)
{
Questionnaire? questionnaire = _questionnaires.Find(questionnaire => questionnaire.Id == questionnaireId);
if (questionnaire != null)
{
_questionnaires.Remove(questionnaire);
return Task.FromResult(true);
}
else
{
Console.WriteLine("Failed to find the questionnaire");
return Task.FromResult(false);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment