Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }