public IActionResult New()
        {
            var viewModel = new PassportFormViewModel()
            {
                PassportTypes = _context.PassportTypes.ToList(),
                Sources       = _context.Sources.ToList()
            };

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

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

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

            var  passportInDb      = _context.Passports.SingleOrDefault(p => p.PassportNo == viewModel.OldPassportNo);
            bool newPassportExists = _context.Passports.SingleOrDefault(p => p.PassportNo == viewModel.PassportDto.PassportNo) != null;

            if (passportInDb != null)
            {
                bool isModifiedPassNo = viewModel.OldPassportNo != viewModel.PassportDto.PassportNo;
                if (isModifiedPassNo && newPassportExists)
                {
                    viewModel.ExistOtherInDb = true;
                    viewModel.Sources        = _context.Sources.ToList();
                    viewModel.PassportTypes  = _context.PassportTypes.ToList();
                    return(View("PassportForm", viewModel));
                }
                TransferData.Transfer(viewModel.PassportDto, passportInDb, _context);
            }
            else if (newPassportExists)
            {
                viewModel.ExistOtherInDb = true;
                viewModel.Sources        = _context.Sources.ToList();
                viewModel.PassportTypes  = _context.PassportTypes.ToList();
                return(View("PassportForm", viewModel));
            }
            else
            {
                var newPassport = new Passport();
                TransferData.Transfer(viewModel.PassportDto, newPassport, _context);
                _context.Passports.Add(newPassport);
            }

            _context.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public IActionResult Edit(long id)
        {
            var passportInDb = _context.Passports.SingleOrDefault(p => p.Id == id);

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

            var viewModel = new PassportFormViewModel()
            {
                PassportTypes = _context.PassportTypes.ToList(),
                Sources       = _context.Sources.ToList(),
                OldPassportNo = passportInDb.PassportNo,
                PassportDto   = new PassportDto()
            };

            TransferData.Transfer(passportInDb, viewModel.PassportDto, _context);
            return(View("PassportForm", viewModel));
        }