public ActionResult AddDriver(IDriverInfo driverInfo)
        {
            PersonAccountDA account       = GetPersonAccount(driverInfo);
            DriverAccountDA driverAccount = new DriverAccountDA
            {
                Person     = account,
                PersonName = driverInfo.PersonName,
                CarBrand   = driverInfo.CarBrand,
                CarColor   = driverInfo.CarColor,
                CarNumber  = driverInfo.CarNumber
            };
            DriverInfoDA driver = new DriverInfoDA
            {
                PersonInfo = new PersonInfoDA
                {
                    Latitude  = driverInfo.CurrentLocationLatidude,
                    Longitude = driverInfo.CurrentLocationLongidude,
                    Person    = account
                }
            };

            _dataProxy.Session.Save(driver.PersonInfo);
            _dataProxy.Session.Save(driverAccount);
            _dataProxy.Session.Save(driver);
            return(ActionResult.ValidResult);
        }
        private PersonAccountDA GetPersonAccount(IPersonInfo personInfo)
        {
            PersonAccountDA account = _dataProxy.Session.CreateCriteria <PersonAccountDA>().List <PersonAccountDA>().FirstOrDefault(p => p.Id == personInfo.Id);

            if (account == null)
            {
                account = new PersonAccountDA
                {
                    Id          = personInfo.Id,
                    PhoneNumber = personInfo.PhoneNumber,
                    SkypeNumber = personInfo.SkypeNumber
                };
                _dataProxy.Session.Save(account);
            }
            return(account);
        }