public Permit Create(Permit permit) { if (permit.PermitTypeId == (int)PermitTypeEnum.VISIT) { var visitor = _visitorRepository.CreateAndReturn(permit.Visitor); permit.VisitorId = visitor.Id; permit.VehicleId = null; permit.Vehicle = null; var result = _permitRepository.CreateAndReturn(permit); result.PermitType = GetPermitTypes().FirstOrDefault(x => x.Id == result.PermitTypeId); return(result); } var vehicle = _vehicleRepository.CreateAndReturn(permit.Vehicle); permit.VehicleId = vehicle.Id; permit.VisitorId = null; permit.Visitor = null; var query = _permitRepository.CreatePermit(permit); query.PermitType = GetPermitTypes().FirstOrDefault(x => x.Id == query.PermitTypeId); query.PermitStatus = GetPermitStatuses().FirstOrDefault(x => x.Id == query.PermitStatusId); return(query); }