private async Task <AdmSchoolGroup> UpdateAdmSchoolGroup(PutAdmSchoolGroupRequest request) { var group = await _repository.FindAsync <AdmSchoolGroup>(request.AdmSchoolGroupID); if (group == null) { return(await CreateAdmSchoolGroup(request)); } group.Name = request.Name.Trim(); group.Description = request.Description?.Trim() ?? ""; group.IsCEPGroup = request.IsCEPGroup; //the logic is to rewrite the adm sites collection with incoming one //it is very tangled logic for this action in the old code which gives no additional profit, just useless... group.AdmSites.Clear(); foreach (var groupSite in request.AdmSchoolGroupSites.Where(x => x.IsSelected)) { var admSite = await _repository.FindAsync <AdmSite>(groupSite.AdmSiteID); if (admSite != null) { group.AdmSites.Add(admSite); } } return(group); }
private async Task Validate(PutAdmSchoolGroupRequest request) { if (string.IsNullOrWhiteSpace(request.Name)) { Debug.WriteLine("PutAdmSchoolGroupRequest is invalid: empty Name field"); throw new InvalidOperationException("Name should not be empty"); } var isUniqueName = await IsUniqueGroupName(new GetIsUniqueGroupNameRequest { Id = request.AdmSchoolGroupID, Name = request.Name }); if (!isUniqueName) { Debug.WriteLine("PutAdmSchoolGroupRequest is invalid: Name already exists"); throw new InvalidOperationException("Name should be unique"); } }
private async Task <AdmSchoolGroup> CreateAdmSchoolGroup(PutAdmSchoolGroupRequest request) { var admSchoolGroup = new AdmSchoolGroup { Name = request.Name.Trim(), Description = request.Description?.Trim() ?? "", IsCEPGroup = request.IsCEPGroup }; foreach (var groupSite in request.AdmSchoolGroupSites.Where(x => x.IsSelected)) { var admSite = await _repository.FindAsync <AdmSite>(groupSite.AdmSiteID); if (admSite != null) { admSchoolGroup.AdmSites.Add(admSite); } } await _repository.CreateAsync(admSchoolGroup); return(admSchoolGroup); }
public async Task <int> SaveAdmSchoolGroup(PutAdmSchoolGroupRequest request) { await Validate(request); AdmSchoolGroup admSchoolGroup; if (request.AdmSchoolGroupID == 0) { admSchoolGroup = await CreateAdmSchoolGroup(request); } else { admSchoolGroup = await UpdateAdmSchoolGroup(request); } _repository.SaveChanges(); if (request.IsCEPGroup) { await PopulateAccCEPRates(admSchoolGroup.AdmSchoolGroupID); } return(admSchoolGroup.AdmSchoolGroupID); }
public async Task <ActionResult <int> > PutAdmSchoolGroup(PutAdmSchoolGroupRequest request) { _logger.LogInformation($"{nameof(SchoolGroupsController)}.{nameof(PutAdmSchoolGroup)} params: ({JsonConvert.SerializeObject(request, Formatting.Indented)})"); return(await _logic.SaveAdmSchoolGroup(request)); }