/// <inheritdoc /> public async Task <CityAdministrationDTO> EditAdministratorAsync(CityAdministrationDTO adminDTO) { var user = await _userManager.FindByIdAsync(adminDTO.UserId); var adminType = await _adminTypeService.GetAdminTypeByIdAsync(adminDTO.AdminTypeId); var role = adminType.AdminTypeName == "Голова Станиці" ? "Голова Станиці" : "Діловод Станиці"; if (adminType.AdminTypeName != adminDTO.AdminType.AdminTypeName) { await _userManager.RemoveFromRoleAsync(user, role); } adminType = await _adminTypeService.GetAdminTypeByNameAsync(adminDTO.AdminType.AdminTypeName); role = adminType.AdminTypeName == "Голова Станиці" ? "Голова Станиці" : "Діловод Станиці"; await _userManager.AddToRoleAsync(user, role); var admin = await _repositoryWrapper.CityAdministration.GetFirstOrDefaultAsync(a => a.ID == adminDTO.ID); admin.StartDate = adminDTO.StartDate ?? DateTime.Now; admin.EndDate = adminDTO.EndDate; admin.AdminTypeId = adminType.ID; admin.AdminType = _mapper.Map <AdminTypeDTO, AdminType>(adminType); _repositoryWrapper.CityAdministration.Attach(admin); _repositoryWrapper.CityAdministration.Update(admin); await _repositoryWrapper.SaveAsync(); return(adminDTO); }
/// <inheritdoc /> public async Task <CityAdministrationDTO> AddAdministratorAsync(CityAdministrationDTO adminDTO) { var adminType = await _adminTypeService.GetAdminTypeByNameAsync(adminDTO.AdminType.AdminTypeName); var admin = new CityAdministration() { StartDate = adminDTO.StartDate ?? DateTime.Now, EndDate = adminDTO.EndDate, AdminTypeId = adminType.ID, CityId = adminDTO.CityId, UserId = adminDTO.UserId }; var user = await _userManager.FindByIdAsync(adminDTO.UserId); var role = adminType.AdminTypeName == "Голова Станиці" ? "Голова Станиці" : "Діловод Станиці"; await _userManager.AddToRoleAsync(user, role); _repositoryWrapper.CityAdministration.Attach(admin); await _repositoryWrapper.CityAdministration.CreateAsync(admin); await _repositoryWrapper.SaveAsync(); return(adminDTO); }
/// <inheritdoc /> public async Task <CityAdministrationDTO> AddAdministratorAsync(CityAdministrationDTO adminDTO) { var adminType = await _adminTypeService.GetAdminTypeByNameAsync(adminDTO.AdminType.AdminTypeName); adminDTO.Status = DateTime.Now < adminDTO.EndDate || adminDTO.EndDate == null; var admin = new CityAdministration() { StartDate = adminDTO.StartDate ?? DateTime.Now, EndDate = adminDTO.EndDate, AdminTypeId = adminType.ID, CityId = adminDTO.CityId, UserId = adminDTO.UserId, Status = adminDTO.Status }; var user = await _userManager.FindByIdAsync(adminDTO.UserId); string role; switch (adminType.AdminTypeName) { case Roles.CityHead: role = Roles.CityHead; break; case Roles.CityHeadDeputy: role = Roles.CityHeadDeputy; break; default: role = Roles.CitySecretary; break; } await _userManager.AddToRoleAsync(user, role); await CheckCityHasAdmin(adminDTO.CityId, adminType.AdminTypeName); await _repositoryWrapper.CityAdministration.CreateAsync(admin); await _repositoryWrapper.SaveAsync(); adminDTO.ID = admin.ID; return(adminDTO); }
/// <inheritdoc /> public async Task <CityAdministrationDTO> EditAdministratorAsync(CityAdministrationDTO adminDTO) { var admin = await _repositoryWrapper.CityAdministration.GetFirstOrDefaultAsync(a => a.ID == adminDTO.ID); var adminType = await _adminTypeService.GetAdminTypeByNameAsync(adminDTO.AdminType.AdminTypeName); if (adminType.ID == admin.AdminTypeId) { admin.StartDate = adminDTO.StartDate ?? DateTime.Now; admin.EndDate = adminDTO.EndDate; _repositoryWrapper.CityAdministration.Update(admin); await _repositoryWrapper.SaveAsync(); } else { await RemoveAdministratorAsync(adminDTO.ID); adminDTO = await AddAdministratorAsync(adminDTO); } return(adminDTO); }