public IActionResult Save(DroppedPassportFormViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                viewModel.DropCauses    = _context.DropCauses.ToList();
                viewModel.Sources       = _context.Sources.ToList();
                viewModel.PassportTypes = _context.PassportTypes.ToList();
                return(View("DroppedPassportForm", viewModel));
            }

            var personInDb = _context.People.SingleOrDefault(p => p.CI == viewModel.DpDto.OwnerCI);

            if (personInDb == null)
            {
                viewModel.NotExistThisPersonInDb = true;
                viewModel.DropCauses             = _context.DropCauses.ToList();
                viewModel.Sources       = _context.Sources.ToList();
                viewModel.PassportTypes = _context.PassportTypes.ToList();
                return(View("DroppedPassportForm", viewModel));
            }

            var dpInDb = _context.DroppedPassports.SingleOrDefault(dp => dp.PassportNo == viewModel.OldPassportNo);

            if (dpInDb == null)
            {
                return(NotFound());
            }

            bool newPassportExists = _context.Passports.SingleOrDefault(dp => dp.PassportNo == viewModel.DpDto.PassportNo) != null;
            bool isModifiedPassNo  = viewModel.OldPassportNo != viewModel.DpDto.PassportNo;

            if (isModifiedPassNo && newPassportExists)
            {
                viewModel.ExistOtherInDb = true;
                viewModel.DropCauses     = _context.DropCauses.ToList();
                viewModel.Sources        = _context.Sources.ToList();
                viewModel.PassportTypes  = _context.PassportTypes.ToList();
                return(View("DroppedPassportForm", viewModel));
            }

            TransferData.Transfer(viewModel.DpDto, dpInDb, _context);

            _context.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public IActionResult Edit(long id)
        {
            var dpInDb = _context.DroppedPassports.SingleOrDefault(dp => dp.Id == id);

            if (dpInDb == null)
            {
                return(NotFound());
            }

            var dpDto = new DroppedPassportDto();

            TransferData.Transfer(dpInDb, dpDto, _context);

            var viewModel = new DroppedPassportFormViewModel()
            {
                OldPassportNo = dpInDb.PassportNo,
                DpDto         = dpDto,
                DropCauses    = _context.DropCauses.ToList(),
                PassportTypes = _context.PassportTypes.ToList(),
                Sources       = _context.Sources.ToList()
            };

            return(View("DroppedPassportForm", viewModel));
        }