コード例 #1
0
        public async Task <ActionResult <List <ManagerViewModel> > > GetProjectManagersAsync(Guid projectId)
        {
            if (projectId == Guid.Empty)
            {
                return(BadRequest("No valid id received"));
            }
            try
            {
                TaskListResult <Manager> result = await personService.GetManagersAsync(projectId);

                //get users from b2c and add tot DTO
                foreach (Manager manager in result.Data)
                {
                    User temp = (await personService.GetUserAsync(manager.PersonId)).Data;
                    if (temp == null)
                    {
                        continue;
                    }
                    PersonViewModel vm =
                        PersonViewModel.CreateVmFromUser(temp, Extensions.GetInstance(b2CExtentionApplicationId));
                    if (vm == null)
                    {
                        continue;
                    }

                    Person person = PersonViewModel.CreatePerson(vm);
                    manager.Person = person;
                }

                if (!result.Succeeded)
                {
                    return(UnprocessableEntity(new ErrorViewModel {
                        Type = Type.Error, Message = result.Message
                    }));
                }
                if (result.Data == null || result.Data.Count == 0)
                {
                    return(Ok(new List <ManagerViewModel>()));
                }
                List <ManagerViewModel> managerVmList = result.Data.Select(ManagerViewModel.CreateVm).ToList();
                return(Ok(managerVmList));
            }
            catch (Exception ex)
            {
                string message = GetType().Name + "Error in " + nameof(GetProjectManagersAsync);
                logger.LogError(ex, message);
                return(UnprocessableEntity(new ErrorViewModel {
                    Type = Type.Error, Message = message
                }));
            }
        }
コード例 #2
0
        public async Task <ActionResult <PersonViewModel> > MakeManagerAsync(Guid projectId, Guid userId)
        {
            if (projectId == Guid.Empty || userId == Guid.Empty)
            {
                BadRequest("No valid Ids received.");
            }

            try
            {
                Project project = (await projectService.GetProjectDetailsAsync(projectId)).Data;
                if (project == null)
                {
                    return(BadRequest("Could not find project"));
                }
                User user = (await personService.GetUserAsync(userId)).Data;
                if (user == null)
                {
                    return(BadRequest("Could not find user"));
                }
                Person person = (await personService.GetPersonAsync(userId)).Data;
                if (person == null)
                {
                    return(BadRequest("Could not find person in DB"));
                }
                Manager manager = (await personService.GetManagerAsync(projectId, userId)).Data;
                if (manager != null)
                {
                    return(BadRequest("User already manages this project"));
                }

                PersonViewModel viewModel = PersonViewModel.CreateVmFromUserAndPerson(user, person,
                                                                                      Extensions.GetInstance(b2CExtentionApplicationId));
                if (viewModel == null)
                {
                    return(BadRequest("Unable to create manager"));
                }

                string oid = IdentityHelper.GetOid(HttpContext.User.Identity as ClaimsIdentity);
                manager = new Manager
                {
                    ProjectId  = project.Id,
                    Project    = project,
                    PersonId   = person.Id,
                    Person     = person,
                    LastEditBy = oid
                };

                TaskResult <Manager> result = await personService.MakeManagerAsync(manager);

                if (viewModel.UserRole != "Boardmember")
                {
                    await ModAdminAsync(userId, 2); //make user a manager in B2C
                }
                if (!result.Succeeded)
                {
                    return(UnprocessableEntity(new ErrorViewModel {
                        Type = Type.Error, Message = result.Message
                    }));
                }
                return(Ok(PersonViewModel.CreateVmFromUser(user, Extensions.GetInstance(b2CExtentionApplicationId))));
            }
            catch (Exception ex)
            {
                string message = GetType().Name + "Error in " + nameof(MakeManagerAsync);
                logger.LogError(ex, message);
                return(UnprocessableEntity(new ErrorViewModel {
                    Type = Type.Error, Message = message
                }));
            }
        }
コード例 #3
0
        public async Task <ActionResult <PersonViewModel> > UpdatePerson(PersonViewModel personViewModel)
        {
            if (personViewModel == null || personViewModel.Id == Guid.Empty)
            {
                return(BadRequest("Invalid Person"));
            }
            try
            {
                TaskResult <Person> personResult = await personService.GetPersonAsync(personViewModel.Id);

                if (personResult == null)
                {
                    return(NotFound("Person not found in database"));
                }
                if (!personResult.Data.RowVersion.SequenceEqual(personViewModel.RowVersion))
                {
                    return(BadRequest("Outdated entity received"));
                }

                Person person = personResult.Data;

                bool userIsCommitteemember = UserHasRole(UserRole.Committeemember,
                                                         (ClaimsIdentity)HttpContext.User.Identity);
                bool userIsBoardmember = UserHasRole(UserRole.Boardmember,
                                                     (ClaimsIdentity)HttpContext.User.Identity);

                person.PushDisabled   = personViewModel.PushDisabled;
                person.PersonalRemark = personViewModel.PersonalRemark;
                foreach (Certificate certificate in person.Certificates)
                {
                    certificate.CertificateType = null;
                }

                if (userIsBoardmember || userIsCommitteemember) //staff
                {
                    person.StaffRemark = personViewModel.StaffRemark;
                }

                if (personViewModel.ProfilePicture != null)
                {
                    person.ProfilePictureId = personViewModel.ProfilePicture.Id;
                }

                TaskResult <Person> result = await personService.UpdatePersonAsync(person);

                if (!result.Succeeded)
                {
                    return(UnprocessableEntity(new ErrorViewModel {
                        Type = Type.Error, Message = result.Message
                    }));
                }

                personViewModel.LastEditBy   = result.Data.LastEditBy;
                personViewModel.LastEditDate = result.Data.LastEditDate;
                personViewModel.RowVersion   = result.Data.RowVersion;
                return(Ok(personViewModel));
            }
            catch (Exception ex)
            {
                string message = GetType().Name + "Error in " + nameof(UpdatePerson);
                logger.LogError(ex, message);
                return(UnprocessableEntity(new ErrorViewModel {
                    Type = Type.Error, Message = message
                }));
            }
        }