public async Task <object> Assign(AssignmentDto model) { var workItem = await _context.WorkItems .Include(r => r.Report) .Include(u => u.AssignedUser) .FirstOrDefaultAsync(x => x.Id == model.WorkItemId); if (workItem == null) { return(NotFound()); } var submission = await _context.Submissions .Include(s => s.FileSpecification) .FirstOrDefaultAsync(x => x.Id == workItem.Report.SubmissionId); var idemUser = _idemService.GetUser(model.IdentityGuid); var user = _context.Users.FirstOrDefault(x => x.IdentityGuid == model.IdentityGuid) ?? new UserProfile(); Mapper.Map(idemUser, user); submission.Reassign(_currentUserFullName, workItem, user, model.Reason); _context.SaveChanges(); //Send assignment notification WorkEmailer.Send(workItem, submission); return(Ok(model)); }
public object Post(int id, UpdateFileSpecificationDto dto) { var model = _context.FileSpecifications.Find(id); if (model == null) { return(NotFound()); } Mapper.Map(dto, model); _context.SaveChanges(); return(Ok(dto)); }
public async Task <object> Waive(int id, SubmissionWaiveAuditEntryDto model) { if (string.IsNullOrWhiteSpace(model.Message)) { return(BadRequest("No message provided")); } var submission = await _context.Submissions .Include(f => f.FileSpecification) .Include(r => r.Reports) .FirstOrDefaultAsync(s => s.Id == id); if (submission == null) { return(NotFound()); } submission.Waive(model.Message, _currentUserFullName); _context.SaveChanges(); //TODO: Refactor. Do not have access to new report until after save if (submission.CurrentReportId == 0) { submission.CurrentReportId = submission.Reports.LastOrDefault()?.Id; } _context.SaveChanges(); var dto = Mapper.Map <SubmissionViewDto>(submission); return(Ok(dto)); }
public async Task <object> AddGroup(string groupName) { var group = await _context.Groups.FirstOrDefaultAsync(x => x.Name == groupName); if (group != null) { return(BadRequest("Group name already exists")); } group = new Group() { Name = groupName }; _context.Groups.Add(group); _context.SaveChanges(); return(Ok(groupName)); }
public void SyncClaims(ClaimsIdentity identity) { var claim = identity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value; var user = _context.Users.FirstOrDefault(x => x.IdentityGuid == new Guid(claim)); if (user == null) { user = new UserProfile(); } user.EmailAddress = identity.GetClaimValue(ClaimTypes.Email); user.LastName = identity.GetClaimValue(ClaimTypes.Surname); user.FirstName = identity.GetClaimValue(ClaimTypes.GivenName); user.FullName = identity.GetClaimValue(ClaimTypes.Name); user.IdentityGuid = new Guid(identity.GetClaimValue(ClaimTypes.NameIdentifier)); _context.Users.AddOrUpdate(user); _context.SaveChanges(); var groups = GetUserGroups(user.EmailAddress); foreach (var @group in groups) { identity.AddClaim(new Claim(ClaimTypes.Role, @group.Name)); identity.AddClaim(new Claim(ClaimsIdentity.DefaultNameClaimType, @group.Name)); } //Set homepage identity.AddUpdateClaim(ClaimTypes.Webpage, "Assignments"); if (identity.HasClaim(x => x.Type == ClaimTypes.Role && x.Value.Contains("AdenAdministrators"))) { identity.AddUpdateClaim(ClaimTypes.Webpage, "Dashboard"); } //if (identity.HasClaim(x => x.Type == ClaimTypes.Role && x.Value.Contains("AdenExecutive"))) // identity.AddUpdateClaim(ClaimTypes.Webpage, "SubmissionReport"); }