public async Task <Models.Aktion> BezahlungBearbeiten(BenutzerID?benutzer, string kontokorrentId, string id, GeaenderteBezahlung request) { if (benutzer.HasValue && !await kontokorrentsService.HasAccess(benutzer.Value, kontokorrentId)) { return(null); } var payment = kontokorrentV2Context.Aktionen.Where(v => v.KontokorrentId == kontokorrentId && v.BezahlungId == id) .Select(v => v.Bezahlung) .SingleOrDefault(); if (null == payment) { return(null); } await CheckEditierbar(id); var personIds = request.BezahlendePersonId != null?request.EmpfaengerIds.Union(new[] { request.BezahlendePersonId }) : request.EmpfaengerIds; await CheckPersons(personIds, kontokorrentId); var aktion = new EFV2.Aktion() { KontokorrentId = kontokorrentId, BearbeiteteBezahlungId = id, Bezahlung = new EFV2.Bezahlung() { Id = Guid.NewGuid().ToString(), Beschreibung = request.Beschreibung, BezahlendePersonId = request.BezahlendePersonId != null ? request.BezahlendePersonId : payment.BezahlendePersonId, Emfpaenger = request.EmpfaengerIds.Select(p => new EmfpaengerInBezahlung() { EmpfaengerId = p }).ToList(), Wert = request.Wert, Zeitpunkt = request.Zeitpunkt.UtcDateTime, }, LaufendeNummer = await NeueLaufNummer(kontokorrentId) }; kontokorrentV2Context.Aktionen.Add(aktion); await kontokorrentV2Context.SaveChangesAsync(); var b = await kontokorrentV2Context.Bezahlung .Include(v => v.BezahlendePerson) .Include(v => v.Emfpaenger) .ThenInclude(v => v.Empfaenger) .Where(b => b.Id == aktion.Bezahlung.Id).SingleAsync(); return(new Models.Aktion() { GeloeschteBezahlungId = null, BearbeiteteBezahlungId = aktion.BearbeiteteBezahlungId, Bezahlung = MapBezahlung(b), LaufendeNummer = aktion.LaufendeNummer }); }
public async Task Entfernen(string kontokorrentId, BenutzerID benutzerID) { var eintraege = await _kontokorrentContext.BenutzerKontokorrent.Where(v => v.BenutzerId == benutzerID.Id && v.KontokorrentId == kontokorrentId) .ToArrayAsync(); foreach (var eintrag in eintraege) { _kontokorrentContext.BenutzerKontokorrent.Remove(eintrag); } await _kontokorrentContext.SaveChangesAsync(); }
public async Task <Models.Person> PersonHinzufuegen(string name, string kontokorrentId, BenutzerID?benutzer) { var p = new EFV2.Person() { Name = name, KontokorrentId = kontokorrentId, Id = Guid.NewGuid().ToString() }; kontokorrentContext.Person.Add(p); try { await kontokorrentContext.SaveChangesAsync(); } catch (DbUpdateException e) { var inner = e.InnerException as SqliteException; if (null != inner && 19 == inner.SqliteErrorCode) { throw new NameExistsException(); } } return(new Models.Person() { Name = name, Id = p.Id }); }
public async Task Create(NeuerBenutzerRequest request) { if (!string.IsNullOrEmpty(request.OeffentlicherName)) { if (!await _kontokorrentContext.Kontokorrent.AnyAsync(v => v.OeffentlicherName == request.OeffentlicherName)) { throw new KontokorrentNotFoundException(); } } if (!string.IsNullOrEmpty(request.EinladungsCode)) { if (!await _kontokorrentContext.EinladungsCode.AnyAsync(v => v.Id == request.EinladungsCode)) { throw new KontokorrentNotFoundException(); } } string hashedSecret; using (SHA256 sha256Hash = SHA256.Create()) { byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(request.Secret)); hashedSecret = Convert.ToBase64String(bytes); } await _kontokorrentContext.BenutzerSecret.AddAsync(new BenutzerSecret() { BenutzerId = request.Id, HashedSecret = hashedSecret }); await _kontokorrentContext.SaveChangesAsync(); var benutzerId = new Models.BenutzerID(request.Id); if (!string.IsNullOrEmpty(request.OeffentlicherName)) { await _kontokorrentsService.HinzufuegenPerOeffentlicherName(request.OeffentlicherName, benutzerId); } else if (!string.IsNullOrEmpty(request.EinladungsCode)) { await _kontokorrentsService.HinzufuegenPerCode(request.EinladungsCode, benutzerId); } }