Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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"));
            }
        }