示例#1
0
    static async Task Transactie(String PasID, String RekeningID, double balans)
    {
        int RekeningIDint;

        Int32.TryParse(RekeningID, out RekeningIDint);
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:50752/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            //HTTPpost part
            var trans = new Transactie()
            {
                Balans = balans, PasID = PasID, RekeningID = RekeningIDint, AtmID = "HRO"
            };
            HttpResponseMessage response = await client.PostAsJsonAsync("api/transacties", trans).ConfigureAwait(false);

            if (response.IsSuccessStatusCode)
            {
                //Error.show("TRANSACTIE SUCCEED");
            }
            else
            {
                Error.show("TRANSACTIE FAILED");
            }
        }
    }
示例#2
0
        public IHttpActionResult PutTransactie(int id, Transactie transactie)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != transactie.TransactieID)
            {
                return(BadRequest());
            }

            db.Entry(transactie).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TransactieExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#3
0
        public async Task <IActionResult> Edit(int id, [Bind("TransactieId,Datum,Bedrag,Omschrijving,VanRekeningId,NaarRekeningId,CategorieId")] Transactie transactie)
        {
            if (id != transactie.TransactieId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _transactiesService.Update(transactie);
                    await _transactiesService.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!await _transactiesService.ExistsAsync(transactie.TransactieId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Details), new { id = transactie.TransactieId }));
            }
            await SetSelectListsAsync(transactie);

            return(View(transactie));
        }
示例#4
0
    private async Task Transactie(String PasID, String RekeningID, int balans)
    {
        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
        using (var client = new HttpClient(new HttpClientHandler {
            UseProxy = false, ClientCertificateOptions = ClientCertificateOption.Automatic
        }))
        {
            client.BaseAddress = new Uri("https://hrsqlapp.tk");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var trans = new Transactie()
            {
                Balans = balans, PasID = Int32.Parse(PasID), RekeningID = RekeningID, locatie = "HRO"
            };
            HttpResponseMessage response = await client.PostAsJsonAsync("api/transacties", trans).ConfigureAwait(false);

            if (response.IsSuccessStatusCode)
            {
                //Error.show("SUCCES");
            }
            else
            {
                //Error.show("FAIL");
            }
        }
    }
示例#5
0
    static async Task Transactie(string PasID, string RekeningID, int balans)
    {
        String RekeningIDint;
        string locatie = "HollandBank-Locatie21";

        //Int32.TryParse(RekeningID, out RekeningIDint);
        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
        using (var client = new HttpClient(new HttpClientHandler {
            UseProxy = false, ClientCertificateOptions = ClientCertificateOption.Automatic
        }))
        {
            client.BaseAddress = new Uri("https://hrsqlapp.tk/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            //HTTPpost part
            var trans = new Transactie()
            {
                Bedrag = balans, Locatie = locatie, RekeningID = RekeningID
            };
            HttpResponseMessage response = await client.PostAsJsonAsync("api/transacties", trans).ConfigureAwait(false);

            if (response.IsSuccessStatusCode)
            {
                //Error.show("TRANSACTIE SUCCEED");
            }
            else
            {
                Error.show("TRANSACTIE FAILED");
            }
        }
    }
        public async Task <IActionResult> PostTransactie([FromBody] TransactiePostModel transactiePM)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Transactie transactie = new Transactie()
            {
                LaatstGewijzigd  = DateTime.Now,
                Bedrag           = transactiePM.Bedrag,
                Datum            = transactiePM.Datum,
                Omschrijving     = transactiePM.Omschrijving,
                Type             = transactiePM.Type,
                Document         = transactiePM.Document,
                DocumentNaam     = transactiePM.DocumentNaam,
                VanRekening      = transactiePM.VanRekening,
                NaarRekening     = transactiePM.NaarRekening,
                TransactieLabels = new List <TransactieLabel>()
            };

            foreach (var newLabelId in transactiePM.Label)
            {
                Label label = _context.Label.Where(l => l.Id == newLabelId).First();
                transactie.TransactieLabels.Add
                (
                    nieuwTransactieLabel(transactie, label)
                );
            }

            _context.Transactie.Add(transactie);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetTransactie", new { id = transactie.Id }, transactie));
        }
示例#7
0
        public ActionResult DeleteConfirmed(int id)
        {
            Transactie transactie = db.Transacties.Find(id);

            db.Transacties.Remove(transactie);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#8
0
        private async Task SetSelectListsAsync(Transactie transactie)
        {
            var rekeningenTask  = _rekeningenService.GetSelectListAsync();
            var categorieenTask = _categorieenService.GetSelectListAsync();
            await Task.WhenAll(rekeningenTask, categorieenTask);

            ViewData["NaarRekeningId"] = SelectListUtil.GetSelectList(rekeningenTask.Result, transactie.NaarRekeningId);
            ViewData["VanRekeningId"]  = SelectListUtil.GetSelectList(rekeningenTask.Result, transactie.VanRekeningId);
            ViewData["CategorieId"]    = SelectListUtil.GetSelectList(categorieenTask.Result, transactie.CategorieId);
        }
 private TransactieLabel nieuwTransactieLabel(Transactie transactie, Label label)
 {
     return(new TransactieLabel
     {
         Transactie = transactie,
         Label = label,
         TransactieId = transactie.Id,
         LabelId = label.Id
     });
 }
示例#10
0
 public ActionResult Edit([Bind(Include = "TransactieID,RekeningID,Bedrag,PasID")] Transactie transactie)
 {
     if (ModelState.IsValid)
     {
         db.Entry(transactie).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(transactie));
 }
示例#11
0
        public async Task <IActionResult> PutTransactie([FromRoute] int id, [FromBody] TransactiePostModel transactiePM)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != transactiePM.Id)
            {
                return(BadRequest());
            }

            Transactie transactie = _context.Transactie.Where(a => a.Id == id).Include(a => a.TransactieLabels).First();

            transactie.LaatstGewijzigd = DateTime.Now;
            transactie.Bedrag          = transactiePM.Bedrag;
            transactie.Datum           = transactiePM.Datum;
            transactie.Omschrijving    = transactiePM.Omschrijving;
            transactie.Type            = transactiePM.Type;
            transactie.Document        = transactiePM.Document;
            transactie.DocumentNaam    = transactiePM.DocumentNaam;
            transactie.VanRekening     = transactiePM.VanRekening;
            transactie.NaarRekening    = transactiePM.NaarRekening;

            transactie.TransactieLabels.Clear();

            foreach (var newLabelId in transactiePM.Label)
            {
                Label label = _context.Label.Where(l => l.Id == newLabelId).First();
                transactie.TransactieLabels.Add
                (
                    nieuwTransactieLabel(transactie, label)
                );
            }

            _context.Entry(transactie).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TransactieExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
示例#12
0
        public IHttpActionResult GetTransactie(int id)
        {
            Transactie transactie = db.Transacties.Find(id);

            if (transactie == null)
            {
                return(NotFound());
            }

            return(Ok(transactie));
        }
示例#13
0
        public ActionResult Create([Bind(Include = "TransactieID,RekeningID,Bedrag,PasID")] Transactie transactie)
        {
            if (ModelState.IsValid)
            {
                db.Transacties.Add(transactie);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(transactie));
        }
示例#14
0
        public IHttpActionResult PostTransactie(Transactie transactie)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Transacties.Add(transactie);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = transactie.TransactieID }, transactie));
        }
示例#15
0
        public IHttpActionResult DeleteTransactie(int id)
        {
            Transactie transactie = db.Transacties.Find(id);

            if (transactie == null)
            {
                return(NotFound());
            }

            db.Transacties.Remove(transactie);
            db.SaveChanges();

            return(Ok(transactie));
        }
示例#16
0
        // GET: Transacties/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Transactie transactie = db.Transacties.Find(id);

            if (transactie == null)
            {
                return(HttpNotFound());
            }
            return(View(transactie));
        }
示例#17
0
        public async Task <IActionResult> Create([Bind("TransactieId,Datum,Bedrag,Omschrijving,VanRekeningId,NaarRekeningId,CategorieId")] Transactie transactie)
        {
            if (ModelState.IsValid)
            {
                await _transactiesService.DetermineCategorieAsync(transactie);

                _transactiesService.Add(transactie);
                await _transactiesService.SaveChangesAsync();

                return(RedirectToAction(nameof(Details), new { id = transactie.TransactieId }));
            }
            await SetSelectListsAsync(transactie);

            return(View(transactie));
        }
示例#18
0
        // GET: Transacties/Create
        public async Task <IActionResult> Create()
        {
            //Bij aanmaken transactie deze voorvullen
            var instellingen = await _instellingenService.GetSingleAsync();

            var transactie = new Transactie
            {
                Datum         = DateTime.Today,
                Bedrag        = 0,
                VanRekeningId = instellingen.StandaardVanRekeningId ?? 0
            };

            await SetSelectListsAsync(transactie);

            return(View(transactie));
        }
示例#19
0
        public async Task <IActionResult> DupliceerTransactie([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Transactie bronTransactie = _context.Transactie
                                        .Include(a => a.TransactieLabels)
                                        .ThenInclude(transactieLabel => transactieLabel.Label)
                                        .FirstOrDefault(t => t.Id == id);

            Transactie transactie = new Transactie()
            {
                LaatstGewijzigd  = DateTime.Now,
                Bedrag           = bronTransactie.Bedrag,
                Datum            = bronTransactie.Datum,
                Omschrijving     = bronTransactie.Omschrijving,
                Type             = bronTransactie.Type,
                Document         = bronTransactie.Document,
                DocumentNaam     = bronTransactie.DocumentNaam,
                VanRekening      = bronTransactie.VanRekening,
                NaarRekening     = bronTransactie.NaarRekening,
                TransactieLabels = new List <TransactieLabel>()
            };

            foreach (var transactieLabel in bronTransactie.TransactieLabels)
            {
                Label label = _context.Label.Where(l => l.Id == transactieLabel.LabelId).First();
                transactie.TransactieLabels.Add
                (
                    nieuwTransactieLabel(transactie, label)
                );
            }

            _context.Transactie.Add(transactie);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetTransactie", new { id = transactie.Id }, transactie));
        }
示例#20
0
        static void Main(string[] args)
        {
            Dictionary <string, decimal> transactiesD = new Dictionary <string, decimal>();

            Queue <Transactie> transactiesQ = new Queue <Transactie>();

            Transactie louis  = new Transactie("Louis", 200);
            Transactie karen  = new Transactie("Karen", 150);
            Transactie sarah  = new Transactie("Sarah", -100);
            Transactie karen1 = new Transactie("Karen", -50);
            Transactie louis1 = new Transactie("Louis", 20);
            Transactie emma   = new Transactie("Emma", 4);
            Transactie louis2 = new Transactie("Louis", -200);

            transactiesQ.Enqueue(louis);
            transactiesQ.Enqueue(karen);
            transactiesQ.Enqueue(sarah);
            transactiesQ.Enqueue(karen1);
            transactiesQ.Enqueue(louis1);
            transactiesQ.Enqueue(emma);
            transactiesQ.Enqueue(louis2);

            while (transactiesQ.Count > 0)
            {
                Transactie personTemp = transactiesQ.Dequeue();
                if (transactiesD.ContainsKey(personTemp.naam))
                {
                    transactiesD[personTemp.naam] += personTemp.bedrag;
                }
                else
                {
                    transactiesD.Add(personTemp.naam, personTemp.bedrag);
                }
            }
            PrintOutDict(transactiesD);
        }
示例#21
0
        private async Task <List <string> > ImportTransactiesOudeApplicatieAsync(List <List <string> > importRows)
        {
            var messages = new List <string>();

            //Massa import, laad alle categorieën en rekeningen van te voren in.
            var rekeningenTask  = _rekeningenService.GetListAsync();
            var categorieenTask = _categorieenService.GetListAsync();
            await Task.WhenAll(rekeningenTask, categorieenTask);

            var rekeningen  = rekeningenTask.Result;
            var categorieen = categorieenTask.Result;

            foreach (var importRow in importRows)
            {
                var errorMessages = new List <string>();
                var infoMessages  = new List <string>();

                var transactie = new Transactie
                {
                    Omschrijving = string.IsNullOrWhiteSpace(importRow[4]) ? null : importRow[4].Trim().Replace("-ENTER-", Environment.NewLine)
                };

                var datumImportValue = importRow[0].Trim();
                if (DateTime.TryParseExact(datumImportValue, "d-M-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime datum))
                {
                    transactie.Datum = datum;
                }
                else
                {
                    errorMessages.Add($"Transactie '{transactie.Omschrijving}' is overgeslagen, '{datumImportValue}' is geen geldige datum.");
                }

                var bedragImportValue = importRow[1].Trim();
                if (decimal.TryParse(bedragImportValue, NumberStyles.Number, CultureInfo.CurrentCulture, out decimal bedrag))
                {
                    transactie.Bedrag = bedrag;
                }
                else
                {
                    errorMessages.Add($"Transactie '{transactie.Omschrijving}' is overgeslagen, '{bedragImportValue}' is geen geldig bedrag.");
                }

                var vanRekeningImportValue = importRow[2].Trim();
                transactie.VanRekening = FindRekeningByNaam(rekeningen, vanRekeningImportValue);
                if (transactie.VanRekening == null)
                {
                    //Validatie werkt op Id, die niet null kan zijn (maar 0).
                    errorMessages.Add($"Transactie '{transactie.Omschrijving}' is overgeslagen, '{vanRekeningImportValue}' is geen geldige rekening.");
                }
                else
                {
                    //Validatie werkt op Id, zet voor nu expliciet (voor o.a. de Unlike validator)
                    transactie.VanRekeningId = transactie.VanRekening.RekeningId;
                }

                var naarRekeningImportValue = importRow[3].Trim();
                transactie.NaarRekening = FindRekeningByNaam(rekeningen, naarRekeningImportValue);
                if (transactie.NaarRekening == null)
                {
                    //Validatie werkt op Id, die niet null kan zijn (maar 0).
                    errorMessages.Add($"Transactie '{transactie.Omschrijving}' is overgeslagen, '{naarRekeningImportValue}' is geen geldige rekening.");
                }
                else
                {
                    //Validatie werkt op Id, zet voor nu expliciet (voor o.a. de Unlike validator)
                    transactie.NaarRekeningId = transactie.NaarRekening.RekeningId;
                }

                var validationResults = new List <ValidationResult>();
                Validator.TryValidateObject(transactie, new ValidationContext(transactie, null, null), validationResults, true);
                foreach (var validationResult in validationResults)
                {
                    errorMessages.Add($"Transactie '{transactie.Omschrijving}' is overgeslagen, {validationResult.ErrorMessage}");
                }

                //Doe categorie, alleen indien er nog geen fouten zijn
                if (!errorMessages.Any())
                {
                    var categorieImportValue = importRow[5].Trim();
                    (var categorie, var categorieErrorMessages) = FindOrImportCategorie(categorieen, categorieImportValue);
                    transactie.Categorie = categorie;
                    foreach (var categorieErrorMessage in categorieErrorMessages)
                    {
                        infoMessages.Add($"Transactie '{transactie.Omschrijving}' bevat een ongeldige categorie, {categorieErrorMessage} categorie is op leeg gezet.");
                    }
                }

                if (errorMessages.Any())
                {
                    messages.AddRange(errorMessages);
                }
                else
                {
                    messages.AddRange(infoMessages);
                    //DetermineCategorieAsync dient niet aangeroepen te worden. De oude applicatie heeft dit bepaald
                    _transactiesService.Add(transactie);
                }
            }
            await _transactiesService.SaveChangesAsync();

            return(messages);
        }
示例#22
0
        private async Task <List <string> > ImportTransactiesOudeExcelAsync(List <List <string> > importRows)
        {
            var messages = new List <string>();

            //Massa import, laad alle rekeningen van te voren in.
            var rekeningen = await _rekeningenService.GetListAsync();

            for (var rowIndex = 0; rowIndex < importRows.Count; rowIndex++)
            {
                var importRow = importRows[rowIndex];

                var errorMessages = new List <string>();

                var transactie = new Transactie
                {
                    Omschrijving = string.IsNullOrWhiteSpace(importRow[4]) ? null : importRow[4].Trim()
                };

                var datumImportValue = importRow[0].Trim();
                if (DateTime.TryParseExact(datumImportValue, "d-M-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime datum))
                {
                    transactie.Datum = datum;
                }
                else
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{datumImportValue}' is geen geldige datum.");
                }

                var bedragImportValue = importRow[1].Trim();
                if (decimal.TryParse(bedragImportValue, NumberStyles.Number, CultureInfo.CurrentCulture, out decimal bedrag))
                {
                    transactie.Bedrag = bedrag;
                }
                else
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{bedragImportValue}' is geen geldig bedrag.");
                }

                var vanRekeningImportValue = importRow[2].Trim();
                (var rekening, var rekeningErrorMessages) = FindOrImportRekening(rekeningen, string.Empty, vanRekeningImportValue);
                if (rekening == null)
                {
                    //Validatie werkt op Id, die niet null kan zijn (maar 0).
                    foreach (var rekeningErrorMessage in rekeningErrorMessages)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {rekeningErrorMessage}");
                    }
                }
                else
                {
                    //Validatie werkt op Id, zet voor nu expliciet (voor o.a. de Unlike validator)
                    transactie.VanRekening   = rekening;
                    transactie.VanRekeningId = transactie.VanRekening.RekeningId;
                }

                var naarRekeningImportValue = importRow[3].Trim();
                (rekening, rekeningErrorMessages) = FindOrImportRekening(rekeningen, string.Empty, naarRekeningImportValue);
                if (rekening == null)
                {
                    //Validatie werkt op Id, die niet null kan zijn (maar 0).
                    foreach (var rekeningErrorMessage in rekeningErrorMessages)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {rekeningErrorMessage}");
                    }
                }
                else
                {
                    //Validatie werkt op Id, zet voor nu expliciet (voor o.a. de Unlike validator)
                    transactie.NaarRekening   = rekening;
                    transactie.NaarRekeningId = transactie.NaarRekening.RekeningId;
                }

                await _transactiesService.DetermineCategorieAsync(transactie);

                var validationResults = new List <ValidationResult>();
                Validator.TryValidateObject(transactie, new ValidationContext(transactie, null, null), validationResults, true);
                foreach (var validationResult in validationResults)
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {validationResult.ErrorMessage}");
                }

                if (errorMessages.Any())
                {
                    messages.AddRange(errorMessages);
                }
                else
                {
                    _transactiesService.Add(transactie);
                }
            }
            await _transactiesService.SaveChangesAsync();

            return(messages);
        }
示例#23
0
        private async Task <List <string> > ImportTransactiesRabobankCsv2018Async(List <List <string> > importRows)
        {
            var messages = new List <string>();

            //Massa import, laad alle rekeningen en instellingen van te voren in.
            var rekeningenTask   = _rekeningenService.GetListAsync();
            var instellingenTask = _instellingenService.GetSingleAsync();
            await Task.WhenAll(rekeningenTask, instellingenTask);

            var rekeningen   = rekeningenTask.Result;
            var instellingen = instellingenTask.Result;

            var importedTransacties = new List <Transactie>();

            for (var rowIndex = 0; rowIndex < importRows.Count; rowIndex++)
            {
                var importRow = importRows[rowIndex];

                var errorMessages = new List <string>();
                var infoMessages  = new List <string>();

                var eigenRekeningnummer = importRow[0].Trim();

                var datumImportValue = importRow[4].Trim();
                if (!DateTime.TryParseExact(datumImportValue, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime datum))
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{datumImportValue}' is geen geldige datum.");
                }

                var isBijschrijving            = false;
                var isBijschrijvingImportValue = importRow[6].Trim();
                if (isBijschrijvingImportValue.Length >= 1)
                {
                    isBijschrijvingImportValue = isBijschrijvingImportValue.Substring(0, 1);
                }
                if (isBijschrijvingImportValue.Equals("+", StringComparison.InvariantCultureIgnoreCase))
                {
                    isBijschrijving = true;
                }
                else if (!isBijschrijvingImportValue.Equals("-", StringComparison.InvariantCultureIgnoreCase))
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{isBijschrijvingImportValue}' is geen geldige waarde voor is bijschrijving.");
                }

                var bedragImportValue = importRow[6].Trim();
                if (bedragImportValue.Length >= 1)
                {
                    bedragImportValue = bedragImportValue.Substring(1);
                }
                if (!decimal.TryParse(bedragImportValue, NumberStyles.Number, CultureInfo.CurrentCulture, out decimal bedrag))
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{bedragImportValue}' is geen geldig bedrag.");
                }

                var tegenRekeningnummer = importRow[8].Trim();
                var tegenRekeningNaam   = importRow[9].Trim();
                var transactieCode      = importRow[13].Trim();

                var omschrijvingSb = new StringBuilder();
                omschrijvingSb.AppendLine(importRow[19].Trim());
                omschrijvingSb.AppendLine(importRow[20].Trim());
                omschrijvingSb.AppendLine(importRow[21].Trim());
                var omschrijving = omschrijvingSb.ToString().Trim();

                var eigenRekening = FindRekeningByRekeningnummer(rekeningen, eigenRekeningnummer);
                if (eigenRekening == null)
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, eigen rekening '{eigenRekeningnummer}' is niet gevonden.");
                }

                Rekening tegenRekening = null;
                if (transactieCode == "kh" || transactieCode == "ga" || transactieCode == "gb")
                {
                    //Kasafhandeling, Geldautomaat Euro, Geldautomaat VV
                    tegenRekening = instellingen.PortemonneeRekening;
                    if (tegenRekening == null)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, er is geen portemonnee ingesteld.");
                    }
                }
                else
                {
                    (var rekening, var rekeningErrorMessages) = FindOrImportRekening(rekeningen, tegenRekeningnummer, tegenRekeningNaam);
                    tegenRekening = rekening;
                    foreach (var rekeningErrorMessage in rekeningErrorMessages)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {rekeningErrorMessage}");
                    }
                }

                Transactie transactie = null;
                if (!errorMessages.Any())
                {
                    //De waarden zijn succesvol geparsed. Maak de transactie
                    transactie = new Transactie
                    {
                        Datum        = datum,
                        Bedrag       = bedrag,
                        VanRekening  = isBijschrijving ? tegenRekening : eigenRekening,
                        NaarRekening = isBijschrijving ? eigenRekening : tegenRekening,
                        Omschrijving = string.IsNullOrWhiteSpace(omschrijving) ? null : omschrijving
                    };

                    //Validatie werkt op Id, zet voor nu expliciet (voor o.a. de Unlike validator)
                    transactie.VanRekeningId  = transactie.VanRekening.RekeningId;
                    transactie.NaarRekeningId = transactie.NaarRekening.RekeningId;

                    await _transactiesService.DetermineCategorieAsync(transactie);

                    var validationResults = new List <ValidationResult>();
                    Validator.TryValidateObject(transactie, new ValidationContext(transactie, null, null), validationResults, true);
                    foreach (var validationResult in validationResults)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {validationResult.ErrorMessage}");
                    }

                    if (importedTransacties.Any(t =>
                                                t.Datum == transactie.Datum &&
                                                t.Bedrag == transactie.Bedrag &&
                                                t.VanRekening == transactie.VanRekening &&
                                                t.NaarRekening == transactie.NaarRekening &&
                                                (
                                                    (transactie.VanRekening.IsEigenRekening && transactie.NaarRekening.IsEigenRekening) || //Interne boeking. Deze komen dubbel voor in een bestand
                                                    (t.Omschrijving == transactie.Omschrijving)                                            //Externe boeking. Controleer ook de omschrijving (Betaalverzoeken verschillen vaak alleen op omschrijving)
                                                )))
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, er is in dit bestand al een andere transactie op {transactie.Datum:ddd d/M/yyyy} met {transactie.Bedrag:C} van '{transactie.VanRekening.Naam}' naar '{transactie.NaarRekening.Naam}'.");
                    }
                }

                if (errorMessages.Any())
                {
                    messages.AddRange(errorMessages);
                }
                else
                {
                    messages.AddRange(infoMessages);
                    _transactiesService.Add(transactie);
                    importedTransacties.Add(transactie);
                }
            }

            await _transactiesService.SaveChangesAsync();

            return(messages);
        }
示例#24
0
 private async Task Transactie(String PasID, String RekeningID, int balans)
 {
     System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
     using (var client = new HttpClient(new HttpClientHandler { UseProxy = false, ClientCertificateOptions = ClientCertificateOption.Automatic }))
     {
         client.BaseAddress = new Uri("https://hrsqlapp.tk");
         client.DefaultRequestHeaders.Accept.Clear();
         client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
         var trans = new Transactie() { Balans = balans, PasID = Int32.Parse(PasID), RekeningID = RekeningID, locatie = "HRO" };
         HttpResponseMessage response = await client.PostAsJsonAsync("api/transacties", trans).ConfigureAwait(false);
         if (response.IsSuccessStatusCode)
         {
             //Error.show("SUCCES");
         }
         else
         {
             //Error.show("FAIL");
         }
     }
 }
示例#25
0
        private async Task <List <string> > ImportTransactiesRabobankCsv2013Async(List <List <string> > importRows)
        {
            var messages = new List <string>();

            //Massa import, laad alle rekeningen en instellingen van te voren in.
            var rekeningenTask   = _rekeningenService.GetListAsync();
            var instellingenTask = _instellingenService.GetSingleAsync();
            await Task.WhenAll(rekeningenTask, instellingenTask);

            var rekeningen   = rekeningenTask.Result;
            var instellingen = instellingenTask.Result;

            var importedTransacties = new List <Transactie>();

            for (var rowIndex = 0; rowIndex < importRows.Count; rowIndex++)
            {
                var importRow = importRows[rowIndex];

                var errorMessages = new List <string>();
                var infoMessages  = new List <string>();

                var eigenRekeningnummer = importRow[0].Trim();

                var datumImportValue = importRow[2].Trim();
                if (!DateTime.TryParseExact(datumImportValue, "yyyyMMdd", CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime datum))
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{datumImportValue}' is geen geldige datum.");
                }

                var isBijschrijving            = false;
                var isBijschrijvingImportValue = importRow[3].Trim();
                if (isBijschrijvingImportValue.Equals("C", StringComparison.InvariantCultureIgnoreCase))
                {
                    isBijschrijving = true;
                }
                else if (!isBijschrijvingImportValue.Equals("D", StringComparison.InvariantCultureIgnoreCase))
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{isBijschrijvingImportValue}' is geen geldige waarde voor is bijschrijving.");
                }

                //Bedragen met een punt, gebruik InvariantCulture
                var bedragImportValue = importRow[4].Trim();
                if (!decimal.TryParse(bedragImportValue, NumberStyles.Number, CultureInfo.InvariantCulture, out decimal bedrag))
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, '{bedragImportValue}' is geen geldig bedrag.");
                }

                var tegenRekeningnummer = importRow[5].Trim();
                var tegenRekeningNaam   = importRow[6].Trim();
                var boekcode            = importRow[8].Trim();

                var skipOmschrijving1 = false;
                if (boekcode == "ba" || boekcode == "bc")
                {
                    //Betaalautomaat, Betalen contactloos
                    //In deze gevallen is er geen tegenrekening, en staat de naam in Omschrijving1
                    if (tegenRekeningnummer != string.Empty || tegenRekeningNaam != string.Empty)
                    {
                        infoMessages.Add($"Transactie op regel {rowIndex + 1} heeft boekcode '{boekcode}' en zou daarom geen tegen rekeningnummer '{tegenRekeningnummer}' of tegen rekening naam '{tegenRekeningNaam}' moeten hebben. Deze zijn overschreven met omschrijving1.");
                        tegenRekeningnummer = string.Empty;
                    }

                    tegenRekeningNaam = importRow[10].Trim();
                    skipOmschrijving1 = true;
                }

                var omschrijvingSb = new StringBuilder();
                if (!skipOmschrijving1)
                {
                    omschrijvingSb.AppendLine(importRow[10].Trim());
                }
                omschrijvingSb.AppendLine(importRow[11].Trim());
                omschrijvingSb.AppendLine(importRow[12].Trim());
                omschrijvingSb.AppendLine(importRow[13].Trim());
                omschrijvingSb.AppendLine(importRow[14].Trim());
                omschrijvingSb.AppendLine(importRow[15].Trim());
                var omschrijving = omschrijvingSb.ToString().Trim();

                var eigenRekening = FindRekeningByRekeningnummer(rekeningen, eigenRekeningnummer);
                if (eigenRekening == null)
                {
                    errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, eigen rekening '{eigenRekeningnummer}' is niet gevonden.");
                }

                Rekening tegenRekening = null;
                if (boekcode == "kh" || boekcode == "ga" || boekcode == "gb")
                {
                    //Kasafhandeling, Geldautomaat Euro, Geldautomaat VV
                    tegenRekening = instellingen.PortemonneeRekening;
                    if (tegenRekening == null)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, er is geen portemonnee ingesteld.");
                    }
                }
                else
                {
                    (var rekening, var rekeningErrorMessages) = FindOrImportRekening(rekeningen, tegenRekeningnummer, tegenRekeningNaam);
                    tegenRekening = rekening;
                    foreach (var rekeningErrorMessage in rekeningErrorMessages)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {rekeningErrorMessage}");
                    }
                }

                Transactie transactie = null;
                if (!errorMessages.Any())
                {
                    //De waarden zijn succesvol geparsed. Maak de transactie
                    transactie = new Transactie
                    {
                        Datum        = datum,
                        Bedrag       = bedrag,
                        VanRekening  = isBijschrijving ? tegenRekening : eigenRekening,
                        NaarRekening = isBijschrijving ? eigenRekening : tegenRekening,
                        Omschrijving = string.IsNullOrWhiteSpace(omschrijving) ? null : omschrijving
                    };

                    //Validatie werkt op Id, zet voor nu expliciet (voor o.a. de Unlike validator)
                    transactie.VanRekeningId  = transactie.VanRekening.RekeningId;
                    transactie.NaarRekeningId = transactie.NaarRekening.RekeningId;

                    await _transactiesService.DetermineCategorieAsync(transactie);

                    var validationResults = new List <ValidationResult>();
                    Validator.TryValidateObject(transactie, new ValidationContext(transactie, null, null), validationResults, true);
                    foreach (var validationResult in validationResults)
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, {validationResult.ErrorMessage}");
                    }

                    if (importedTransacties.Any(t =>
                                                t.Datum == transactie.Datum &&
                                                t.Bedrag == transactie.Bedrag &&
                                                t.VanRekening == transactie.VanRekening &&
                                                t.NaarRekening == transactie.NaarRekening &&
                                                t.Omschrijving == transactie.Omschrijving))
                    {
                        errorMessages.Add($"Transactie op regel {rowIndex + 1} is overgeslagen, er is in dit bestand al een andere transactie op {transactie.Datum:ddd d/M/yyyy} met {transactie.Bedrag:C} van '{transactie.VanRekening.Naam}' naar '{transactie.NaarRekening.Naam}' met omschrijving '{transactie.Omschrijving}'.");
                    }
                }

                if (errorMessages.Any())
                {
                    messages.AddRange(errorMessages);
                }
                else
                {
                    messages.AddRange(infoMessages);
                    _transactiesService.Add(transactie);
                    importedTransacties.Add(transactie);
                }
            }

            await _transactiesService.SaveChangesAsync();

            return(messages);
        }