public async Task <DistraintRevokeModel> RevokeAsync(DistraintRevokeModel model)
        {
            if (model == null)
            {
                throw new NullReferenceException("DistraintRevokeModel is null");
            }

            var distraint = await _context.Distraint
                            .Where(x => x.Id == model.Id)
                            .FirstOrDefaultAsync();

            if (distraint == null)
            {
                throw new Exception("Distraint to be revoked was not found");
            }

            if (distraint.StatusCode.ToUpper() != Shared.Enums.DistraintStatus.ENFORCED.ToString())
            {
                throw new Exception("Distraint is not in valid status to be revoked");
            }

            model.RevokedAt = DateTime.SpecifyKind(DateTime.Now.ToUniversalTime(), DateTimeKind.Utc);

            distraint.StatusCode     = Shared.Enums.DistraintStatus.REVOKED.ToString();
            distraint.RevocationDate = model.RevocationDate.HasValue == true?DateTime.SpecifyKind(model.RevocationDate.Value.ToUniversalTime(), DateTimeKind.Utc) : DateTime.UtcNow;

            distraint.RevokedAt = model.RevokedAt;
            distraint.RevokedBy = model.RevokedBy;

            _context.Distraint.Update(distraint);
            await _context.SaveChangesAsync();

            return(model);
        }
示例#2
0
        public async Task <IActionResult> Revoke([FromBody] DistraintRevokeModel model)
        {
            if (!ModelState.IsValid)
            {
                string msg = $"{_localizer.GetString("Invalid DistraintRevokeModel").Value}!<br />{ModelState.GetErrors()}";
                Log.Information($"DistraintController/Revoke/{CurrentUserId}/{CurrentUserUsername} - {msg}");
                return(BadRequest(msg));
            }

            try
            {
                var distraint = await _distraintService.RevokeAsync(model);

                string msg = $"{_localizer.GetString("Distraint revoked successfully").Value}! (Id: {distraint.Id})";
                Log.Information($"DistraintController/Revoke/{CurrentUserId}/{CurrentUserUsername} - {msg}");
                return(Ok(distraint.Id));
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"ERROR revoking distraint by user {CurrentUserId}/{CurrentUserUsername}");
                return(BadRequest("Error revoking distraint"));
            }
        }