protected void btnSave_Click(object sender, EventArgs e) { if (Page.IsValid) { DataLoadOptions dlo = new DataLoadOptions(); dlo.LoadWith<Ajancy.Person>(p => p.User); dlo.LoadWith<Ajancy.User>(u => u.UsersInRoles); dlo.LoadWith<Ajancy.Person>(p => p.DriverCertifications); dlo.LoadWith<Ajancy.DriverCertification>(dc => dc.DriverCertificationCars); dlo.LoadWith<Ajancy.DriverCertificationCar>(dcc => dcc.CarPlateNumber); dlo.LoadWith<Ajancy.CarPlateNumber>(cpn => cpn.Car); dlo.LoadWith<Ajancy.Car>(c => c.FuelCards); db = new Ajancy.Kimia_Ajancy(Public.ConnectionString); db.LoadOptions = dlo; #region AjancyType Ajancy.Person person = new Ajancy.Person(); Ajancy.DrivingLicense drivingLicense = new Ajancy.DrivingLicense(); Ajancy.DriverCertification driverCertification = new Ajancy.DriverCertification(); Ajancy.DriverCertificationCar driverCertificationCar = new Ajancy.DriverCertificationCar(); Ajancy.CarPlateNumber carPlateNumber = new Ajancy.CarPlateNumber(); Ajancy.PlateNumber plateNumber = new Ajancy.PlateNumber(); Ajancy.Car car = new Ajancy.Car(); Ajancy.FuelCard fuelCard = new Ajancy.FuelCard(); Ajancy.Car car_db = null; if (this.ViewState["PersonID"] == null) // New Person { car_db = db.Cars.FirstOrDefault<Ajancy.Car>(c => c.EngineNo == this.txtCarEngineNo.Text.Trim() && c.ChassisNo == this.txtCarChassisNo.Text.Trim()); if (car_db != null) { foreach (var cpn in car_db.CarPlateNumbers) { foreach (var dcc in cpn.DriverCertificationCars) { if (dcc.LockOutDate == null) { this.lblMessage.Text = "خودرو مورد نظر با این شماره موتور و شماره شاسی متعلق به شخص دیگری میباشد"; return; } } } car = car_db; } else { db.Cars.InsertOnSubmit(car); } if (db.Cars.Any<Ajancy.Car>(c => c.VIN == this.txtCarVIN.Text.Trim())) { this.lblMessage.Text = "خودرو مورد نظر با این شماره VIN متعلق به شخص دیگری میباشد"; return; } if (db.FuelCards.Any<Ajancy.FuelCard>(fc => fc.PAN == this.txtFuelCardPAN.Text)) { this.lblMessage.Text = "شماره PAN کارت سوخت خودرو قبلا برای خودرو دیگری ثبت شده"; return; } Ajancy.PlateNumber pln = db.PlateNumbers.FirstOrDefault<Ajancy.PlateNumber>(pl => pl.TwoDigits == this.txtCarPlateNumber_1.Text.Trim() && pl.Alphabet == this.drpCarPlateNumber.SelectedValue && pl.ThreeDigits == this.txtCarPlateNumber_2.Text.Trim() && pl.RegionIdentifier == this.txtCarPlateNumber_3.Text.Trim()); if (pln != null) { foreach (Ajancy.CarPlateNumber cpn in pln.CarPlateNumbers) { foreach (var dcc in cpn.DriverCertificationCars) { if (dcc.LockOutDate == null) { this.lblMessage.Text = "شماره پلاک وارد شده متعلق به شخص دیگری میباشد"; return; } } } } Ajancy.User user = new Ajancy.User(); user.UserName = this.txtNationalCode.Text.Trim(); user.ProvinceID = Public.ActiveUserRole.User.ProvinceID; user.CityID = Public.ActiveUserRole.User.CityID; user.SubmitDate = DateTime.Now; user.UsersInRoles.Add(new Ajancy.UsersInRole { RoleID = (short)Public.Role.TaxiDriver, MembershipDate = DateTime.Now }); person.User = user; person.NationalCode = this.txtNationalCode.Text.Trim(); person.SubmitDate = DateTime.Now; driverCertification.CertificationType = (byte)Public.AjancyType.TaxiAjancy; driverCertification.SubmitDate = DateTime.Now; carPlateNumber = new Ajancy.CarPlateNumber { Car = car, PlateNumber = plateNumber, Person = person }; driverCertificationCar = new Ajancy.DriverCertificationCar { CarPlateNumber = carPlateNumber, SubmitDate = DateTime.Now }; driverCertification.DriverCertificationCars.Add(driverCertificationCar); person.DrivingLicenses.Add(drivingLicense); person.DriverCertifications.Add(driverCertification); fuelCard.SubmitDate = DateTime.Now; car.FuelCards.Add(fuelCard); db.CarPlateNumbers.InsertOnSubmit(carPlateNumber); db.AjancyDrivers.InsertOnSubmit(new Ajancy.AjancyDriver { AjancyID = Public.ActiveAjancy.AjancyID, DriverCertificationCar = driverCertificationCar, MembershipDate = DateTime.Now }); db.Persons.InsertOnSubmit(person); } else // Person Exists { person = db.Persons.FirstOrDefault<Ajancy.Person>(p => p.PersonID == Public.ToInt(this.ViewState["PersonID"])); if (person.User.UsersInRoles.Any<Ajancy.UsersInRole>(ur => ur.RoleID == (short)Public.Role.TaxiDriver)) // Person is a driver { driverCertification = person.DriverCertifications.First<Ajancy.DriverCertification>(dc => dc.CertificationType == (byte)Public.AjancyType.TaxiAjancy); driverCertificationCar = driverCertification.DriverCertificationCars.Last<Ajancy.DriverCertificationCar>(); carPlateNumber = driverCertificationCar.CarPlateNumber; plateNumber = carPlateNumber.PlateNumber; car = carPlateNumber.Car; //fuelCard = car.FuelCards.First<Ajancy.FuelCard>(fc => fc.DiscardDate == null); fuelCard = car.FuelCards.Last<Ajancy.FuelCard>(); drivingLicense = person.DrivingLicenses.LastOrDefault<Ajancy.DrivingLicense>(); if (drivingLicense == null) { drivingLicense = new Ajancy.DrivingLicense(); person.DrivingLicenses.Add(drivingLicense); } car_db = db.Cars.FirstOrDefault<Ajancy.Car>(c => c.EngineNo == this.txtCarEngineNo.Text.Trim() && c.ChassisNo == this.txtCarChassisNo.Text.Trim() && c.CarID != carPlateNumber.Car.CarID); if (car_db != null) { foreach (var cpn in car_db.CarPlateNumbers) { foreach (var dcc in cpn.DriverCertificationCars) { if (dcc.LockOutDate == null) { this.lblMessage.Text = "خودرو مورد نظر با این شماره موتور و شماره شاسی متعلق به شخص دیگری میباشد"; return; } } } carPlateNumber.Car = car_db; } if (db.Cars.Any<Ajancy.Car>(c => c.VIN == this.txtCarVIN.Text.Trim() && c.CarID != car.CarID)) { this.lblMessage.Text = "خودرو مورد نظر با این شماره VIN متعلق به شخص دیگری میباشد"; return; } if (db.FuelCards.Any<Ajancy.FuelCard>(fc => fc.PAN == this.txtFuelCardPAN.Text && fc.FuelCardID != fuelCard.FuelCardID)) { this.lblMessage.Text = "شماره PAN کارت سوخت خودرو قبلا برای خودرو دیگری ثبت شده"; return; } Ajancy.PlateNumber pln = db.PlateNumbers.FirstOrDefault<Ajancy.PlateNumber>(pl => pl.TwoDigits == this.txtCarPlateNumber_1.Text.Trim() && pl.Alphabet == this.drpCarPlateNumber.SelectedValue && pl.ThreeDigits == this.txtCarPlateNumber_2.Text.Trim() && pl.RegionIdentifier == this.txtCarPlateNumber_3.Text.Trim() && pl.PlateNumberID != carPlateNumber.PlateNumber.PlateNumberID); if (pln != null) { foreach (Ajancy.CarPlateNumber cpn in pln.CarPlateNumbers) { foreach (var dcc in cpn.DriverCertificationCars) { if (dcc.LockOutDate == null) { this.lblMessage.Text = "شماره پلاک وارد شده متعلق به شخص دیگری میباشد"; return; } } } } } else // Person is not driver { car_db = db.Cars.FirstOrDefault<Ajancy.Car>(c => c.EngineNo == this.txtCarEngineNo.Text.Trim() && c.ChassisNo == this.txtCarChassisNo.Text.Trim()); if (car_db != null) { foreach (var cpn in car_db.CarPlateNumbers) { foreach (var dcc in cpn.DriverCertificationCars) { if (dcc.LockOutDate == null) { this.lblMessage.Text = "خودرو مورد نظر با این شماره موتور و شماره شاسی متعلق به شخص دیگری میباشد"; return; } } } car = car_db; } else { db.Cars.InsertOnSubmit(car); } if (db.Cars.Any<Ajancy.Car>(c => c.VIN == this.txtCarVIN.Text.Trim())) { this.lblMessage.Text = "خودرو مورد نظر با این شماره VIN متعلق به شخص دیگری میباشد"; return; } if (db.FuelCards.Any<Ajancy.FuelCard>(fc => fc.PAN == this.txtFuelCardPAN.Text)) { this.lblMessage.Text = "شماره PAN کارت سوخت خودرو قبلا برای خودرو دیگری ثبت شده"; return; } Ajancy.PlateNumber pln = db.PlateNumbers.FirstOrDefault<Ajancy.PlateNumber>(pl => pl.TwoDigits == this.txtCarPlateNumber_1.Text.Trim() && pl.Alphabet == this.drpCarPlateNumber.SelectedValue && pl.ThreeDigits == this.txtCarPlateNumber_2.Text.Trim() && pl.RegionIdentifier == this.txtCarPlateNumber_3.Text.Trim()); if (pln != null) { foreach (Ajancy.CarPlateNumber cpn in pln.CarPlateNumbers) { foreach (var dcc in cpn.DriverCertificationCars) { if (dcc.LockOutDate == null) { this.lblMessage.Text = "شماره پلاک وارد شده متعلق به شخص دیگری میباشد"; return; } } } } person.User.UsersInRoles.Add(new Ajancy.UsersInRole { RoleID = (short)Public.Role.TaxiDriver, MembershipDate = DateTime.Now }); driverCertification.CertificationType = (byte)Public.AjancyType.TaxiAjancy; driverCertification.SubmitDate = DateTime.Now; carPlateNumber = new Ajancy.CarPlateNumber { Car = car, PlateNumber = plateNumber, Person = person }; driverCertificationCar = new Ajancy.DriverCertificationCar { CarPlateNumber = carPlateNumber, SubmitDate = DateTime.Now }; driverCertification.DriverCertificationCars.Add(driverCertificationCar); person.DriverCertifications.Add(driverCertification); person.DrivingLicenses.Add(drivingLicense); fuelCard.SubmitDate = DateTime.Now; car.FuelCards.Add(fuelCard); db.CarPlateNumbers.InsertOnSubmit(carPlateNumber); db.AjancyDrivers.InsertOnSubmit(new Ajancy.AjancyDriver { AjancyID = Public.ActiveAjancy.AjancyID, DriverCertificationCar = driverCertificationCar, MembershipDate = DateTime.Now }); } } // --------- setting other values person.SubmitDate = DateTime.Now; person.FirstName = this.txtFirstName.Text.Trim(); person.LastName = this.txtLastName.Text.Trim(); person.Father = this.txtFather.Text.Trim(); person.BirthCertificateNo = this.txtBirthCertificateNo.Text.Trim(); person.BirthCertificateSerial = this.txtBirthCertificateSerial.Text.Trim(); person.BirthCertificateSerie = this.txtBirthCertificateSerie.Text.Trim(); person.BirthCertificateAlfa = this.drpBirthCertificateAlfa.SelectedValue; person.Gender = Public.ToByte(this.drpGender.SelectedValue); person.Marriage = Public.ToByte(this.drpMarriage.SelectedValue); person.BirthDate = this.txtBirthDate.GeorgianDate.Value; person.BirthPlace = this.txtBirthPlace.Text.Trim(); person.BirthCertificatePlace = this.txtBirthCertificatePlace.Text.Trim(); person.FamilyMembersCount = this.txtFamilyMembersCount.Text.Trim(); person.Education = Public.ToByte(this.drpEducation.SelectedValue); person.MilitaryService = Public.ToByte(this.drpMilitaryService.SelectedValue); person.Religion = Public.ToByte(this.drpReligion.SelectedValue); person.Subreligion = this.txtSubreligion.Text.Trim(); person.JobStatus = Public.ToByte(this.drpJobStatus.SelectedValue); person.Phone = this.txtPhone.Text.Trim(); person.Mobile = this.txtMobile.Text.Trim(); person.PostalCode = this.txtPostalCode.Text.Trim(); person.Address = this.txtAddress.Text.Trim(); //person.FormerJob = this.txtFormerJob.Text.Trim(); //person.FormerJobType = Public.ToByte(this.drpFormerJobType.SelectedValue); plateNumber.TwoDigits = this.txtCarPlateNumber_1.Text.Trim(); plateNumber.Alphabet = this.drpCarPlateNumber.SelectedValue; plateNumber.ThreeDigits = this.txtCarPlateNumber_2.Text.Trim(); plateNumber.RegionIdentifier = this.txtCarPlateNumber_3.Text.Trim(); drivingLicense.DrivingLicenseNo = this.txtDrivingLicenseNo.Text.Trim(); drivingLicense.ExportDate = this.txtDrivingLicenseDate.GeorgianDate.Value; drivingLicense.ExportPlace = this.txtDrivingLicensePlace.Text.Trim(); drivingLicense.Type = Public.ToByte(this.drpDrivingLicenseType.SelectedValue); //if (!string.IsNullOrEmpty(this.txtDriverCertificationNo.Text)) //{ // if (db.DriverCertifications.Any<Ajancy.DriverCertification>(dc => dc.DriverCertificationNo == this.txtDriverCertificationNo.Text)) // { // this.lblMessage.Text = "شماره دفترچه صلاحیت تکراری میباشد"; // return; // } //} driverCertification.DriverCertificationNo = string.IsNullOrEmpty(this.txtDriverCertificationNo.Text) ? null : this.txtDriverCertificationNo.Text.Trim(); car.CarTypeID = Public.ToByte(this.drpCarType.SelectedValue); car.Model = this.txtCarModel.Text.Trim(); car.Color = this.txtCarColor.Text.Trim(); car.EngineNo = this.txtCarEngineNo.Text.Trim(); car.ChassisNo = this.txtCarChassisNo.Text.Trim(); car.GASProvider = Public.ToByte(this.drpGASProvider.SelectedValue); car.FuelType = Public.ToByte(this.drpFuelType.SelectedValue); fuelCard.CardType = Public.ToByte(this.drpFuelCardType.SelectedValue); fuelCard.PAN = this.txtFuelCardPAN.Text.Trim(); car.VIN = this.txtCarVIN.Text.Trim().ToUpper(); // Sets the owner of the car Ajancy.Person ownerPer = null; if (!string.IsNullOrEmpty(this.txtOwnerName.Text.Trim()) && !string.IsNullOrEmpty(this.txtOwnerFamily.Text.Trim()) && !string.IsNullOrEmpty(this.txtOwnerNationalCode.Text.Trim()) && !this.txtOwnerNationalCode.Text.Trim().Equals(person.NationalCode)) { ownerPer = db.Persons.FirstOrDefault<Ajancy.Person>(p => p.NationalCode == this.txtOwnerNationalCode.Text.Trim()); if (ownerPer == null) { ownerPer = new Ajancy.Person { NationalCode = this.txtOwnerNationalCode.Text.Trim(), SubmitDate = DateTime.Now }; Ajancy.User ownerUser = new Ajancy.User { UserName = this.txtOwnerNationalCode.Text.Trim() , ProvinceID = person.User.ProvinceID , CityID = person.User.CityID , SubmitDate = DateTime.Now }; ownerUser.UsersInRoles.Add(new Ajancy.UsersInRole { RoleID = (short)Public.Role.CarOwner, MembershipDate = DateTime.Now, LockOutDate = DateTime.Now }); ownerPer.User = ownerUser; db.Persons.InsertOnSubmit(ownerPer); } else if (!ownerPer.User.UsersInRoles.Any<Ajancy.UsersInRole>(ur => ur.RoleID == (short)Public.Role.CarOwner)) { ownerPer.User.UsersInRoles.Add(new Ajancy.UsersInRole { RoleID = (short)Public.Role.CarOwner, MembershipDate = DateTime.Now, LockOutDate = DateTime.Now }); } ownerPer.FirstName = this.txtOwnerName.Text.Trim(); ownerPer.LastName = this.txtOwnerFamily.Text.Trim(); person.CarPlateNumbers.Remove(carPlateNumber); ownerPer.CarPlateNumbers.Add(carPlateNumber); } else if (carPlateNumber.OwnerPersonID > 0 && carPlateNumber.OwnerPersonID != person.PersonID) // Set the driver as owner again { carPlateNumber.Person = person; } #endregion try { db.SubmitChanges(); if (Request.QueryString["id"] == null) { DisposeContext(); Response.Redirect("~/Message.aspx?mode=12"); } else // edit mode { DisposeContext(); Response.Redirect("~/Message.aspx?mode=7"); } } catch (Exception ex) { if (ex.Message.Contains("DrivingLicenseNo")) { this.lblMessage.Text = "شماره گواهینامه رانندگی تکراری میباشد"; } else { throw ex; } } } }
private void detach_DrivingLicenses(DrivingLicense entity) { this.SendPropertyChanging(); entity.Person = null; }
partial void UpdateDrivingLicense(DrivingLicense instance);
partial void DeleteDrivingLicense(DrivingLicense instance);
partial void InsertDrivingLicense(DrivingLicense instance);