private static CursusDto CreateCursussesAndCursusInstantiesAndAssignThemToACursusDto(List <string> splitLines) { var cursusInstanties = new List <CursusInstantie>(); var cursusses = new List <Cursus>(); var cursusDto = new CursusDto { CursusInstanties = cursusInstanties, Cursussen = cursusses }; for (int i = 0; i < splitLines.Count; i += 4) { var set = splitLines.Skip(i).Take(4).ToList(); if (set.Count > 1) { if (set != null || set.All(x => string.IsNullOrWhiteSpace(x))) { var cursus = new Cursus(); var cursusInstantie = new CursusInstantie(); cursus.Titel = set[0]; cursus.Code = set[1]; cursus.Duur = set[2]; if (!set[3].Contains("-")) { cursusInstantie.StartDatum = DateTime.Parse(set[3]); } else { throw new ArgumentException((i + 3).ToString()); } cursusInstantie.Cursus = cursus; cursusInstanties.Add(cursusInstantie); cursusses.Add(cursus); } } } cursusDto.Cursussen = cursusses; cursusDto.CursusInstanties = cursusInstanties; return(cursusDto); }
public static CursusDto MapToCursusInstances(string fileContent) { var lines = fileContent.Split(new[] { Environment.NewLine }, StringSplitOptions.None).ToArray(); lines = RemoveLastEmptyLines(lines); CheckForTheCorrectFormat(lines); List <string> splitLines = SplitTheValuesAfterTheSemicolon(lines); List <int> emptyLineIndexes = FindIndexesOfEmptyLines(splitLines); if (emptyLineIndexes.Count != 0) { emptyLineIndexes.ForEach(x => splitLines.RemoveAt(x)); } CursusDto cursusDto = CreateCursussesAndCursusInstantiesAndAssignThemToACursusDto(splitLines); return(cursusDto); }
public HttpResponseMessage PostCursus() { var httpRequest = HttpContext.Current.Request; if (httpRequest.Files.Count < 1) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } try { var cursusDto = new CursusDto(); var file = httpRequest.Files[0]; using (var streamReader = new StreamReader(file.InputStream)) { var fileContent = streamReader.ReadToEnd(); cursusDto = FileProcessService.MapToCursusInstances(fileContent); } var succesFullAddedCursusCounter = 0; var succesFullAddedCursusInstantiesCounter = 0; foreach (var cursus in cursusDto.Cursussen) { if (_cursusValidator.DoesCursusNotExist(cursus) && _cursusValidator.DoesCursusHaveFilledAttributes(cursus)) { _repository.AddCursus(cursus); _repository.Save(); succesFullAddedCursusCounter++; } } foreach (var cursusInstantie in cursusDto.CursusInstanties) { if (_cursusInstantieValidator.DoesNotCursusInstantieExist(cursusInstantie)) { _repository.AddCursusInstantie(cursusInstantie); _repository.Save(); succesFullAddedCursusInstantiesCounter++; } } var requestBody = $"Cursussen toegevoegd: {succesFullAddedCursusCounter}. " + $"CursussenInstanties toegevoegd: {succesFullAddedCursusInstantiesCounter}." + $"Cursussen dubbel: {cursusDto.Cursussen.Count - succesFullAddedCursusCounter}." + $"CursussenInstanties dubbel: { cursusDto.CursusInstanties.Count - succesFullAddedCursusInstantiesCounter}"; return(Request.CreateResponse(HttpStatusCode.OK, requestBody, "application/json")); } catch (ArgumentException ex) { var requestBody = $"Bestand is niet in correct formaat op regel {ex.Message}." + $"Er zijn geen cursus of cursusinstanties toegevoegd."; return(Request.CreateResponse(HttpStatusCode.Accepted, requestBody, "application/json")); } catch (Exception ex) { var requestBody = $"Bestand is niet in correct formaat op regel {ex.Message}." + $"Er zijn geen cursus of cursusinstanties toegevoegd."; return(Request.CreateResponse(HttpStatusCode.BadRequest, requestBody, "application/json")); } }