Exemple #1
0
        public async Task <IActionResult> EndPosition(int id)
        {
            try
            {
                CityAdministration cityAdministration = _repoWrapper.CityAdministration
                                                        .FindByCondition(ca => ca.ID == id)
                                                        .Include(ca => ca.AdminType)
                                                        .Include(ca => ca.User)
                                                        .First();
                var userId = _userManager.GetUserId(User);
                if (!_userAccessManager.HasAccess(userId, cityAdministration.UserId))
                {
                    return(RedirectToAction("HandleError", "Error", new { code = 403 }));
                }
                cityAdministration.EndDate = DateTime.Today;
                _repoWrapper.CityAdministration.Update(cityAdministration);
                _repoWrapper.Save();
                await _userManager.RemoveFromRoleAsync(cityAdministration.User, cityAdministration.AdminType.AdminTypeName);

                return(Ok("Каденцію діловодства успішно завершено!"));
            }
            catch
            {
                return(NotFound("Не вдалося завершити каденцію діловодства!"));
            }
        }
Exemple #2
0
 public async Task <IActionResult> DeletePosition(int id)
 {
     try
     {
         CityAdministration cityAdministration = _repoWrapper.CityAdministration
                                                 .FindByCondition(ca => ca.ID == id)
                                                 .Include(ca => ca.AdminType)
                                                 .Include(ca => ca.User)
                                                 .First();
         var userId = _userManager.GetUserId(User);
         if (!_userAccessManager.HasAccess(userId, cityAdministration.UserId))
         {
             return(RedirectToAction("HandleError", "Error", new { code = 403 }));
         }
         if (cityAdministration.EndDate == null)
         {
             await _userManager.RemoveFromRoleAsync(cityAdministration.User, cityAdministration.AdminType.AdminTypeName);
         }
         _repoWrapper.CityAdministration.Delete(cityAdministration);
         _repoWrapper.Save();
         return(Ok("Діловодство успішно видалено!"));
     }
     catch
     {
         return(NotFound("Не вдалося видалити діловодство!"));
     }
 }
Exemple #3
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);
        }
Exemple #5
0
        public async Task<IActionResult> ConfirmAnnualReport(int id)
        {
            try
            {
                var annualReport = _repoWrapper.AnnualReports
                    .FindByCondition(ar => ar.ID == id && ar.Status == AnnualReportStatus.Unconfirmed)
                    .Include(ar => ar.City)
                    .Include(ar => ar.CityManagement)
                        .ThenInclude(cm => cm.CityAdminNew)
                    .First();
                var userId = _userManager.GetUserId(User);
                if (!_cityAccessManager.HasAccess(userId, annualReport.CityId))
                {
                    return RedirectToAction("HandleError", "Error", new { code = 403 });
                }
                var annualReportOld = _repoWrapper.AnnualReports
                    .FindByCondition(ar => ar.CityId == annualReport.CityId && ar.Status == AnnualReportStatus.Confirmed)
                    .Include(ar => ar.City)
                    .Include(ar => ar.CityManagement)
                        .ThenInclude(cm => cm.CityAdminNew)
                    .FirstOrDefault();

                // update annualReport status
                if (annualReportOld != null)
                {
                    annualReportOld.Status = AnnualReportStatus.Saved;
                    _repoWrapper.AnnualReports.Update(annualReportOld);
                }
                annualReport.Status = AnnualReportStatus.Confirmed;
                _repoWrapper.AnnualReports.Update(annualReport);

                // update oldCityAdmin EndDate
                var adminType = _repoWrapper.AdminType
                        .FindByCondition(at => at.AdminTypeName == "Голова Станиці")
                        .First();
                CityAdministration cityAdminOld = _repoWrapper.CityAdministration
                        .FindByCondition(ca => ca.CityId == annualReport.CityId && ca.AdminTypeId == adminType.ID)
                        .Include(ca => ca.User)
                        .LastOrDefault();
                annualReport.CityManagement.CityAdminOldId = cityAdminOld?.ID;
                if (cityAdminOld != null && annualReport.CityManagement.CityAdminNew != null
                    && annualReport.CityManagement.UserId != cityAdminOld.UserId && cityAdminOld.EndDate == null)
                {
                    cityAdminOld.EndDate = DateTime.Now;
                    _repoWrapper.CityAdministration.Update(cityAdminOld);
                    await _userManager.RemoveFromRoleAsync(cityAdminOld.User, adminType.AdminTypeName);
                }

                // create newCityAdmin
                if ((cityAdminOld == null || cityAdminOld?.EndDate != null) && annualReport.CityManagement.CityAdminNew != null)
                {
                    CityAdministration cityAdminNew = new CityAdministration
                    {
                        UserId = annualReport.CityManagement.UserId,
                        CityId = annualReport.CityId,
                        AdminTypeId = adminType.ID,
                        StartDate = DateTime.Now
                    };
                    _repoWrapper.CityAdministration.Create(cityAdminNew);
                    await _userManager.AddToRoleAsync(annualReport.CityManagement.CityAdminNew, adminType.AdminTypeName);
                }

                // update oldCityLegalStatus EndDate
                CityLegalStatus cityLegalStatusOld = _repoWrapper.CityLegalStatuses
                    .FindByCondition(cls => cls.CityId == annualReport.CityId)
                    .LastOrDefault();
                annualReport.CityManagement.CityLegalStatusOldId = cityLegalStatusOld?.Id;
                if (cityLegalStatusOld != null && annualReport.CityManagement.CityLegalStatusNew != cityLegalStatusOld?.LegalStatusType
                    && cityLegalStatusOld?.DateFinish == null)
                {
                    cityLegalStatusOld.DateFinish = DateTime.Now;
                    _repoWrapper.CityLegalStatuses.Update(cityLegalStatusOld);
                }

                // create newCityLegalStatus
                if (cityLegalStatusOld == null || cityLegalStatusOld.DateFinish != null)
                {
                    CityLegalStatus cityLegalStatusNew = new CityLegalStatus
                    {
                        CityId = annualReport.CityId,
                        LegalStatusType = annualReport.CityManagement.CityLegalStatusNew,
                        DateStart = DateTime.Now
                    };
                    _repoWrapper.CityLegalStatuses.Create(cityLegalStatusNew);
                }
                _repoWrapper.Save();
                return Ok($"Звіт станиці {annualReport.City.Name} за {annualReport.Date.Year} рік підтверджено!");
            }
            catch (Exception e)
            {
                _logger.LogError($"Exception: {e.Message}");
                return NotFound("Не вдалося підтвердити річний звіт!");
            }
        }