예제 #1
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        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));
        }
예제 #5
0
        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");
        }