public async Task <bool> IsAccepted(Guid userAgreementId, Guid personId) { var userConsent = _userConsentRepository.Find(userAgreementId, p => p.PersonId == personId)?.Items?.FirstOrDefault(); if (userConsent == null) { return(false); } if (userConsent.IsAccepted && userConsent.ExpiresOnUTC >= DateTime.UtcNow) { return(true); } else { return(false); } }
public async Task <IActionResult> Post([FromBody] UserConsent value) { if (value == null) { ModelState.AddModelError("Save", "No data passed"); return(BadRequest(ModelState)); } try { var userConsent = repository.Find(null, p => p.PersonId == SecurityContext.PersonId && p.UserAgreementID == value.UserAgreementID)?.Items?.FirstOrDefault(); if (userConsent != null) { userConsent.IsAccepted = value.IsAccepted; if (value.IsAccepted) { userConsent.ExpiresOnUTC = DateTime.UtcNow.AddYears(1); } return(await base.PutEntity(userConsent.Id.ToString(), userConsent).ConfigureAwait(false)); } else { var userAgreementConsent = new UserConsent() { PersonId = value.PersonId, UserAgreementID = value.UserAgreementID, IsAccepted = value.IsAccepted, ExpiresOnUTC = DateTime.UtcNow.AddYears(1) }; return(await base.PostEntity(userAgreementConsent)); } } catch (Exception ex) { return(ex.GetActionResult()); } }