Multi language dynamic object changes

This commit is contained in:
uppuv
2023-09-08 15:40:06 -04:00
parent 24a6e6513e
commit 4cf7d9f891
21 changed files with 370 additions and 283 deletions

View File

@ -49,60 +49,57 @@ namespace DamageAssesment.Api.Surveys.Providers
}
}
public async Task<(bool IsSuccess, IEnumerable<Models.Survey> Surveys, string ErrorMessage)> GetSurveysAsync(string Language)
public IEnumerable<Models.SurveyTranslation> GetSurveyTranslations(int id, IEnumerable<Models.SurveyTranslation> SurveyTranslation,string? language)
{
IEnumerable<Models.Survey> surveysList = null;
if (SurveyTranslation == null)
{
if (string.IsNullOrEmpty(language))
{
SurveyTranslation = mapper.Map<IEnumerable<Db.SurveyTranslation>, IEnumerable<Models.SurveyTranslation>>(
surveyDbContext.SurveysTranslation.Where(a => a.SurveyId == id).ToList());
}
else
{
SurveyTranslation = mapper.Map<IEnumerable<Db.SurveyTranslation>, IEnumerable<Models.SurveyTranslation>>(
surveyDbContext.SurveysTranslation.Where(a => a.SurveyId == id && a.Language == language).ToList());
}
}
return SurveyTranslation;
}
public object CreateMultiLanguageObject(IEnumerable<Models.SurveyTranslation> surveyTranslations)
{
object MultiLanguage = new object();
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (Models.SurveyTranslation item in surveyTranslations)
{
dict.Add(item.Language, item.Title);
}
MultiLanguage = dict;
return MultiLanguage;
}
public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language)
{
IEnumerable<Models.MultiLanSurvey> surveysList = null;
try
{
logger?.LogInformation("Gell all Surveys from DB");
var surveys = await surveyDbContext.Surveys.Where(s => s.IsEnabled == true).ToListAsync();
var surveyTranslations = await surveyDbContext.SurveysTranslation.ToListAsync();
//var surveyTranslations = await surveyDbContext.SurveysTranslation.ToListAsync();
if (surveys != null)
{
if (string.IsNullOrEmpty(Language))
{
surveysList = from s in surveys
select new
Models.Survey
{
Id = s.Id,
StartDate = s.StartDate,
EndDate = s.EndDate,
IsEnabled = s.IsEnabled,
CreatedDate = s.CreatedDate,
Titles = from t in surveyTranslations
where t.SurveyId == s.Id
select new Models.SurveyTranslation
{
Title = t.Title,
Language = t.Language
}
surveysList = from s in surveys
select new
Models.MultiLanSurvey
{
Id = s.Id,
StartDate = s.StartDate,
EndDate = s.EndDate,
IsEnabled = s.IsEnabled,
CreatedDate = s.CreatedDate,
Titles = CreateMultiLanguageObject(GetSurveyTranslations(s.Id,null, language))
};
}
else
{
surveysList = from s in surveys
select new
Models.Survey
{
Id = s.Id,
StartDate = s.StartDate,
EndDate = s.EndDate,
IsEnabled = s.IsEnabled,
CreatedDate = s.CreatedDate,
Titles = from t in surveyTranslations
where t.SurveyId == s.Id
&& t.Language == Language
select new Models.SurveyTranslation
{
Title = t.Title,
Language = t.Language
}
};
}
};
logger?.LogInformation($"{surveys.Count} Items(s) found");
return (true, surveysList, null);
@ -115,55 +112,27 @@ namespace DamageAssesment.Api.Surveys.Providers
return (false, null, ex.Message);
}
}
public async Task<(bool IsSuccess, Models.Survey Surveys, string ErrorMessage)> GetSurveysAsync(int Id, string Language)
public async Task<(bool IsSuccess, Models.MultiLanSurvey Surveys, string ErrorMessage)> GetSurveysAsync(int id, string language)
{
try
{
logger?.LogInformation("Query Survey");
var survey = await surveyDbContext.Surveys.SingleOrDefaultAsync(s => s.Id == Id && s.IsEnabled == true);
var survey = await surveyDbContext.Surveys.SingleOrDefaultAsync(s => s.Id == id && s.IsEnabled == true);
if (survey != null)
{
Models.Survey result = null;
Models.MultiLanSurvey result = null;
var surveyTranslations = await surveyDbContext.SurveysTranslation.Where(s => s.SurveyId == survey.Id).ToListAsync();
if (string.IsNullOrEmpty(Language))
result = new Models.MultiLanSurvey
{
result = new Models.Survey
{
Id = survey.Id,
StartDate = survey.StartDate,
EndDate = survey.EndDate,
IsEnabled = survey.IsEnabled,
CreatedDate = survey.CreatedDate,
Titles = from t in surveyTranslations
select new Models.SurveyTranslation
{
Title = t.Title,
Language = t.Language
}
Id = survey.Id,
StartDate = survey.StartDate,
EndDate = survey.EndDate,
IsEnabled = survey.IsEnabled,
CreatedDate = survey.CreatedDate,
Titles = CreateMultiLanguageObject(GetSurveyTranslations(survey.Id,null, language))
};
}
else
{
result = new Models.Survey
{
Id = survey.Id,
StartDate = survey.StartDate,
EndDate = survey.EndDate,
IsEnabled = survey.IsEnabled,
CreatedDate = survey.CreatedDate,
Titles = from t in surveyTranslations
where t.Language == Language
select new Models.SurveyTranslation
{
Title = t.Title,
Language = t.Language
}
};
}
logger?.LogInformation($"Survey Id: {Id} found");
};
logger?.LogInformation($"Survey Id: {id} found");
return (true, result, null);
}
return (false, null, "Not found");
@ -175,7 +144,7 @@ namespace DamageAssesment.Api.Surveys.Providers
}
}
public async Task<(bool IsSuccess, Models.Survey Survey, string ErrorMessage)> PostSurveyAsync(Models.Survey survey)
public async Task<(bool IsSuccess, Models.MultiLanSurvey Survey, string ErrorMessage)> PostSurveyAsync(Models.Survey survey)
{
try
{
@ -192,8 +161,9 @@ namespace DamageAssesment.Api.Surveys.Providers
surveyDbContext.SurveysTranslation.Add(new Db.SurveyTranslation {SurveyId = _survey.Id, Language = title.Language, Title = title.Title });
}
await surveyDbContext.SaveChangesAsync();
survey.Id = _survey.Id;
return (true,survey, "Successful");
var result = mapper.Map<Db.Survey, Models.MultiLanSurvey>(_survey);
result.Titles = CreateMultiLanguageObject(GetSurveyTranslations(_survey.Id, survey.Titles, ""));
return (true, result, "Successful");
}
else
{
@ -208,7 +178,7 @@ namespace DamageAssesment.Api.Surveys.Providers
}
}
public async Task<(bool IsSuccess, Models.Survey Survey, string ErrorMessage)> PutSurveyAsync(int Id, Models.Survey survey)
public async Task<(bool IsSuccess, Models.MultiLanSurvey Survey, string ErrorMessage)> PutSurveyAsync(int Id, Models.Survey survey)
{
try
{
@ -236,21 +206,8 @@ namespace DamageAssesment.Api.Surveys.Providers
surveyDbContext.SurveysTranslation.AddRange(listSurveyTranslation);
await surveyDbContext.SaveChangesAsync();
var result = new Models.Survey
{
Id = Id,
StartDate = survey.StartDate,
EndDate = survey.EndDate,
IsEnabled = survey.IsEnabled,
CreatedDate = survey.CreatedDate,
Titles = from t in listSurveyTranslation
select new Models.SurveyTranslation
{
Title = t.Title,
Language = t.Language
}
};
var result = mapper.Map<Db.Survey, Models.MultiLanSurvey>(_survey);
result.Titles = CreateMultiLanguageObject(GetSurveyTranslations(_survey.Id, survey.Titles, ""));
return (true, result, "Successful");
}
else
@ -272,7 +229,7 @@ namespace DamageAssesment.Api.Surveys.Providers
}
}
public async Task<(bool IsSuccess, Models.Survey Survey, string ErrorMessage)> DeleteSurveyAsync(int Id)
public async Task<(bool IsSuccess, Models.MultiLanSurvey Survey, string ErrorMessage)> DeleteSurveyAsync(int Id)
{
try
{
@ -280,9 +237,11 @@ namespace DamageAssesment.Api.Surveys.Providers
if (survey != null)
{
var result = mapper.Map<Db.Survey, Models.MultiLanSurvey>(survey);
result.Titles = CreateMultiLanguageObject(GetSurveyTranslations(survey.Id, null, ""));
surveyDbContext.Surveys.Remove(survey);
await surveyDbContext.SaveChangesAsync();
return (true, mapper.Map<Db.Survey, Models.Survey>(survey), $"Survey Id: {Id} deleted Successfuly");
return (true, result, $"Survey Id: {Id} deleted Successfuly");
}
else
{