Example #1
0
 /// <summary>
 /// Create entity from web model
 /// </summary>
 /// <param name="source"></param>
 /// <returns></returns>
 public static DomainModels.VehicleMaintenanceTypeFrequency CreateFrom(this VehicleMaintenanceTypeFrequency source)
 {
     return(new DomainModels.VehicleMaintenanceTypeFrequency
     {
         MaintenanceTypeFrequencyId = source.MaintenanceTypeFrequencyId,
         MaintenanceStartDate = source.MaintenanceStartDate,
         Frequency = source.Frequency,
         FrequencyKiloMeter = source.FrequencyKiloMeter,
         MaintenanceTypeId = source.MaintenanceTypeId,
     });
 }
Example #2
0
        /// <summary>
        /// Save Vehicle
        /// </summary>
        /// <param name="vehicle"></param>
        /// <returns></returns>
        public Vehicle SaveVehicle(Vehicle vehicle)
        {
            Vehicle vehicleDbVersion = vehicleRepository.Find(vehicle.VehicleId);

            vehicle.VehicleCondition = "Not implemented";

            #region Add

            if (vehicleDbVersion == null)
            {
                if (vehicleRepository.DuplicateVehiclePlateNumber(vehicle.PlateNumber, vehicle.VehicleId))
                {
                    throw new CaresException(string.Format(CultureInfo.InvariantCulture, Resources.Vehicle.Vehicle.DuplicatePlateNumber));
                }
                vehicle.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.IsActive         = true;
                vehicle.IsReadOnly       = vehicle.IsPrivate = vehicle.IsDeleted = false;
                vehicle.RecLastUpdatedDt = vehicle.RecCreatedDt = DateTime.Now;
                vehicle.RecLastUpdatedBy = vehicle.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.RowVersion       = 0;
                vehicle.VehicleCode      = "CaresVehicle";

                #region Other detail
                vehicle.VehicleOtherDetail.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.VehicleOtherDetail.IsActive         = true;
                vehicle.VehicleOtherDetail.IsReadOnly       = vehicle.VehicleOtherDetail.IsPrivate = vehicle.VehicleOtherDetail.IsDeleted = false;
                vehicle.VehicleOtherDetail.RecLastUpdatedDt = vehicle.VehicleOtherDetail.RecCreatedDt = DateTime.Now;
                vehicle.VehicleOtherDetail.RecLastUpdatedBy = vehicle.VehicleOtherDetail.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleOtherDetail.RecCreatedBy     = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleOtherDetail.RecLastUpdatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleOtherDetail.RowVersion       = 0;
                #endregion

                #region Purchase Info
                vehicle.VehiclePurchaseInfo.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.VehiclePurchaseInfo.RecLastUpdatedDt = vehicle.VehiclePurchaseInfo.RecCreatedDt = DateTime.Now;
                vehicle.VehiclePurchaseInfo.RecLastUpdatedBy = vehicle.VehiclePurchaseInfo.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehiclePurchaseInfo.RowVersion       = 0;
                #endregion

                #region Leased Info
                vehicle.VehicleLeasedInfo.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.VehicleLeasedInfo.RecLastUpdatedDt = vehicle.VehicleLeasedInfo.RecCreatedDt = DateTime.Now;
                vehicle.VehicleLeasedInfo.RecLastUpdatedBy = vehicle.VehicleLeasedInfo.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleLeasedInfo.RowVersion       = 0;
                #endregion

                #region Insurance Info
                vehicle.VehicleInsuranceInfo.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.VehicleInsuranceInfo.RecLastUpdatedDt = vehicle.VehicleInsuranceInfo.RecCreatedDt = DateTime.Now;
                vehicle.VehicleInsuranceInfo.RecLastUpdatedBy = vehicle.VehicleInsuranceInfo.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleInsuranceInfo.RowVersion       = 0;
                #endregion

                #region Dericiation Info
                vehicle.VehicleDepreciation.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.VehicleDepreciation.RecLastUpdatedDt = vehicle.VehicleDepreciation.RecCreatedDt = DateTime.Now;
                vehicle.VehicleDepreciation.RecLastUpdatedBy = vehicle.VehicleDepreciation.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleDepreciation.RowVersion       = 0;
                #endregion

                #region Disposal Info
                vehicle.VehicleDisposalInfo.UserDomainKey    = vehicleRepository.UserDomainKey;
                vehicle.VehicleDisposalInfo.RecLastUpdatedDt = vehicle.VehicleDisposalInfo.RecCreatedDt = DateTime.Now;
                vehicle.VehicleDisposalInfo.RecLastUpdatedBy = vehicle.VehicleDisposalInfo.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicle.VehicleDisposalInfo.RowVersion       = 0;
                //Vehicle Maintenance Type Frequency Items
                if (vehicle.VehicleMaintenanceTypeFrequencies != null)
                {
                    foreach (var item in vehicle.VehicleMaintenanceTypeFrequencies)
                    {
                        item.UserDomainKey    = vehicleRepository.UserDomainKey;
                        item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                        item.RecLastUpdatedBy = item.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                        item.RowVersion       = 0;
                    }
                }
                #endregion

                #region Vehicle Check List Item List
                if (vehicle.VehicleCheckListItems != null)
                {
                    foreach (var item in vehicle.VehicleCheckListItems)
                    {
                        item.UserDomainKey    = vehicleRepository.UserDomainKey;
                        item.IsReadOnly       = item.IsPrivate = vehicle.IsDeleted = false;
                        item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                        item.RecLastUpdatedBy = item.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                        item.RowVersion       = 0;
                    }
                }
                #endregion

                vehicleRepository.Add(vehicle);
            }
            #endregion

            #region Edit
            else
            {
                vehicleDbVersion.IsBranchOwner          = vehicle.IsBranchOwner;
                vehicleDbVersion.PlateNumber            = vehicle.PlateNumber;
                vehicleDbVersion.VehicleName            = vehicle.VehicleName;
                vehicleDbVersion.ModelYear              = vehicle.ModelYear;
                vehicleDbVersion.FleetPoolId            = vehicle.FleetPoolId;
                vehicleDbVersion.Color                  = vehicle.Color;
                vehicleDbVersion.OperationsWorkPlaceId  = vehicle.OperationsWorkPlaceId;
                vehicleDbVersion.FuelLevel              = vehicle.FuelLevel;
                vehicleDbVersion.TankSize               = vehicle.TankSize;
                vehicleDbVersion.InitialOdometer        = vehicle.InitialOdometer;
                vehicleDbVersion.CurrentOdometer        = vehicle.CurrentOdometer;
                vehicleDbVersion.RegistrationDate       = vehicle.RegistrationDate;
                vehicleDbVersion.VehicleMakeId          = vehicle.VehicleMakeId;
                vehicleDbVersion.VehicleCategoryId      = vehicle.VehicleCategoryId;
                vehicleDbVersion.VehicleModelId         = vehicle.VehicleModelId;
                vehicleDbVersion.VehicleStatusId        = vehicle.VehicleStatusId;
                vehicleDbVersion.FuelTypeId             = vehicle.FuelTypeId;
                vehicleDbVersion.TransmissionTypeId     = vehicle.TransmissionTypeId;
                vehicleDbVersion.RegistrationExpiryDate = vehicle.RegistrationExpiryDate;
                vehicleDbVersion.VehicleCondition       = vehicle.VehicleCondition;

                #region Vehicle other Detail
                vehicleDbVersion.VehicleOtherDetail.NumberOfDoors       = vehicle.VehicleOtherDetail.NumberOfDoors;
                vehicleDbVersion.VehicleOtherDetail.HorsePower_CC       = vehicle.VehicleOtherDetail.HorsePower_CC;
                vehicleDbVersion.VehicleOtherDetail.NumberOfCylinders   = vehicle.VehicleOtherDetail.NumberOfCylinders;
                vehicleDbVersion.VehicleOtherDetail.IsAlloyRim          = vehicle.VehicleOtherDetail.IsAlloyRim;
                vehicleDbVersion.VehicleOtherDetail.ChasisNumber        = vehicle.VehicleOtherDetail.ChasisNumber;
                vehicleDbVersion.VehicleOtherDetail.EngineNumber        = vehicle.VehicleOtherDetail.EngineNumber;
                vehicleDbVersion.VehicleOtherDetail.KeyCode             = vehicle.VehicleOtherDetail.KeyCode;
                vehicleDbVersion.VehicleOtherDetail.RadioCode           = vehicle.VehicleOtherDetail.RadioCode;
                vehicleDbVersion.VehicleOtherDetail.Accessories         = vehicle.VehicleOtherDetail.Accessories;
                vehicleDbVersion.VehicleOtherDetail.TopSpeed            = vehicle.VehicleOtherDetail.TopSpeed;
                vehicleDbVersion.VehicleOtherDetail.InteriorDescription = vehicle.VehicleOtherDetail.InteriorDescription;
                vehicleDbVersion.VehicleOtherDetail.FrontWheelSize      = vehicle.VehicleOtherDetail.FrontWheelSize;
                vehicleDbVersion.VehicleOtherDetail.BackWheelSize       = vehicle.VehicleOtherDetail.BackWheelSize;
                vehicleDbVersion.VehicleOtherDetail.RecLastUpdatedBy    = vehicleRepository.LoggedInUserIdentity;
                vehicleDbVersion.VehicleOtherDetail.RecLastUpdatedDt    = DateTime.Now;
                #endregion

                #region Vehicle Purchase Info
                vehicleDbVersion.VehiclePurchaseInfo.PurchaseDate        = vehicle.VehiclePurchaseInfo.PurchaseDate;
                vehicleDbVersion.VehiclePurchaseInfo.PurchaseDescription = vehicle.VehiclePurchaseInfo.PurchaseDescription;
                vehicleDbVersion.VehiclePurchaseInfo.PurchasedFrom       = vehicle.VehiclePurchaseInfo.PurchasedFrom;
                vehicleDbVersion.VehiclePurchaseInfo.PurchaseOrderNumber = vehicle.VehiclePurchaseInfo.PurchaseOrderNumber;
                vehicleDbVersion.VehiclePurchaseInfo.PurchaseCost        = vehicle.VehiclePurchaseInfo.PurchaseCost;
                vehicleDbVersion.VehiclePurchaseInfo.IsUsedVehicle       = vehicle.VehiclePurchaseInfo.IsUsedVehicle;
                vehicleDbVersion.VehiclePurchaseInfo.RecLastUpdatedBy    = vehicleRepository.LoggedInUserIdentity;
                vehicleDbVersion.VehiclePurchaseInfo.RecLastUpdatedDt    = DateTime.Now;
                #endregion

                #region Vehicle Leased Info
                vehicleDbVersion.VehicleLeasedInfo.DownPayment       = vehicle.VehicleLeasedInfo.DownPayment;
                vehicleDbVersion.VehicleLeasedInfo.LeasedStartDate   = vehicle.VehicleLeasedInfo.LeasedStartDate;
                vehicleDbVersion.VehicleLeasedInfo.LeasedFinishDate  = vehicle.VehicleLeasedInfo.LeasedFinishDate;
                vehicleDbVersion.VehicleLeasedInfo.MonthlyPayment    = vehicle.VehicleLeasedInfo.MonthlyPayment;
                vehicleDbVersion.VehicleLeasedInfo.LeasedFrom        = vehicle.VehicleLeasedInfo.LeasedFrom;
                vehicleDbVersion.VehicleLeasedInfo.InterestRate      = vehicle.VehicleLeasedInfo.InterestRate;
                vehicleDbVersion.VehicleLeasedInfo.PrinicipalPayment = vehicle.VehicleLeasedInfo.PrinicipalPayment;
                vehicleDbVersion.VehicleLeasedInfo.FirstPaymentDate  = vehicle.VehicleLeasedInfo.FirstPaymentDate;
                vehicleDbVersion.VehicleLeasedInfo.LastMonthPayment  = vehicle.VehicleLeasedInfo.LastMonthPayment;
                vehicleDbVersion.VehicleLeasedInfo.LeaseToOwnership  = vehicle.VehicleLeasedInfo.LeaseToOwnership;
                vehicleDbVersion.VehicleLeasedInfo.FirstMonthPayment = vehicle.VehicleLeasedInfo.FirstMonthPayment;
                vehicleDbVersion.VehicleLeasedInfo.BPMainId          = vehicle.VehicleLeasedInfo.BPMainId;
                vehicleDbVersion.VehicleLeasedInfo.RecLastUpdatedBy  = vehicleRepository.LoggedInUserIdentity;
                vehicleDbVersion.VehicleLeasedInfo.RecLastUpdatedDt  = DateTime.Now;
                #endregion

                #region Vehicle Insurance Info
                vehicleDbVersion.VehicleInsuranceInfo.InsuranceAgent   = vehicle.VehicleInsuranceInfo.InsuranceAgent;
                vehicleDbVersion.VehicleInsuranceInfo.CoverageLimit    = vehicle.VehicleInsuranceInfo.CoverageLimit;
                vehicleDbVersion.VehicleInsuranceInfo.RenewalDate      = vehicle.VehicleInsuranceInfo.RenewalDate;
                vehicleDbVersion.VehicleInsuranceInfo.InsuranceDate    = vehicle.VehicleInsuranceInfo.InsuranceDate;
                vehicleDbVersion.VehicleInsuranceInfo.Premium          = vehicle.VehicleInsuranceInfo.Premium;
                vehicleDbVersion.VehicleInsuranceInfo.InsuredFrom      = vehicle.VehicleInsuranceInfo.InsuredFrom;
                vehicleDbVersion.VehicleInsuranceInfo.BPMainId         = vehicle.VehicleInsuranceInfo.BPMainId;
                vehicleDbVersion.VehicleInsuranceInfo.InsuranceTypeId  = vehicle.VehicleInsuranceInfo.InsuranceTypeId;
                vehicleDbVersion.VehicleInsuranceInfo.InsuredValue     = vehicle.VehicleInsuranceInfo.InsuredValue;
                vehicleDbVersion.VehicleInsuranceInfo.RecLastUpdatedBy = vehicleRepository.LoggedInUserIdentity;
                vehicleDbVersion.VehicleInsuranceInfo.RecLastUpdatedDt = DateTime.Now;
                #endregion

                #region Vehicle Dereciation Info
                vehicleDbVersion.VehicleDepreciation.UsefulPeriodStartDate = vehicle.VehicleDepreciation.UsefulPeriodStartDate;
                vehicleDbVersion.VehicleDepreciation.FirstMonthDepAmount   = vehicle.VehicleDepreciation.FirstMonthDepAmount;
                vehicleDbVersion.VehicleDepreciation.MonthlyDepAmount      = vehicle.VehicleDepreciation.MonthlyDepAmount;
                vehicleDbVersion.VehicleDepreciation.LastMonthDepAmount    = vehicle.VehicleDepreciation.LastMonthDepAmount;
                vehicleDbVersion.VehicleDepreciation.ResidualValue         = vehicle.VehicleDepreciation.ResidualValue;
                vehicleDbVersion.VehicleDepreciation.UsefulPeriodEndDate   = vehicle.VehicleDepreciation.UsefulPeriodEndDate;
                vehicleDbVersion.VehicleDepreciation.RecLastUpdatedBy      = vehicleRepository.LoggedInUserIdentity;
                vehicleDbVersion.VehicleDepreciation.RecLastUpdatedDt      = DateTime.Now;
                #endregion

                #region Vehicle Disposal Info
                vehicleDbVersion.VehicleDisposalInfo.SaleDate            = vehicle.VehicleDisposalInfo.SaleDate;
                vehicleDbVersion.VehicleDisposalInfo.SalePrice           = vehicle.VehicleDisposalInfo.SalePrice;
                vehicleDbVersion.VehicleDisposalInfo.SoldTo              = vehicle.VehicleDisposalInfo.SoldTo;
                vehicleDbVersion.VehicleDisposalInfo.DisposalDescription = vehicle.VehicleDisposalInfo.DisposalDescription;
                vehicleDbVersion.VehicleDisposalInfo.BPMainId            = vehicle.VehicleDisposalInfo.BPMainId;
                vehicleDbVersion.VehicleDisposalInfo.RecLastUpdatedBy    = vehicleRepository.LoggedInUserIdentity;
                vehicleDbVersion.VehicleDisposalInfo.RecLastUpdatedDt    = DateTime.Now;
                #endregion

                #region Vehicle Maintenance Type Frequency Items
                //Add vehicle maintenenace items
                if (vehicle.VehicleMaintenanceTypeFrequencies != null)
                {
                    foreach (var item in vehicle.VehicleMaintenanceTypeFrequencies)
                    {
                        if (
                            vehicleDbVersion.VehicleMaintenanceTypeFrequencies.All(
                                x =>
                                x.MaintenanceTypeFrequencyId != item.MaintenanceTypeFrequencyId ||
                                item.MaintenanceTypeFrequencyId == 0))
                        {
                            item.UserDomainKey    = vehicleRepository.UserDomainKey;
                            item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                            item.RecLastUpdatedBy = item.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                            item.RowVersion       = 0;

                            vehicleDbVersion.VehicleMaintenanceTypeFrequencies.Add(item);
                        }
                    }
                }
                //find missing items
                List <VehicleMaintenanceTypeFrequency> missingItems = new List <VehicleMaintenanceTypeFrequency>();
                foreach (VehicleMaintenanceTypeFrequency dbversionItemeMaintenanceTypeFrequency in vehicleDbVersion.VehicleMaintenanceTypeFrequencies)
                {
                    if (vehicle.VehicleMaintenanceTypeFrequencies != null && vehicle.VehicleMaintenanceTypeFrequencies.All(x => x.MaintenanceTypeFrequencyId != dbversionItemeMaintenanceTypeFrequency.MaintenanceTypeFrequencyId))
                    {
                        missingItems.Add(dbversionItemeMaintenanceTypeFrequency);
                    }
                    if (vehicle.VehicleMaintenanceTypeFrequencies == null)
                    {
                        missingItems.Add(dbversionItemeMaintenanceTypeFrequency);
                    }
                }
                //remove missing items
                foreach (VehicleMaintenanceTypeFrequency missingMaintenanceTypeFrequency in missingItems)
                {
                    VehicleMaintenanceTypeFrequency dbVersionMissingItem = vehicleDbVersion.VehicleMaintenanceTypeFrequencies.First(x => x.MaintenanceTypeFrequencyId == missingMaintenanceTypeFrequency.MaintenanceTypeFrequencyId);
                    if (dbVersionMissingItem.MaintenanceTypeFrequencyId > 0)
                    {
                        vehicleDbVersion.VehicleMaintenanceTypeFrequencies.Remove(dbVersionMissingItem);
                        maintenanceTypeFrequencyRepository.Delete(dbVersionMissingItem);
                        maintenanceTypeFrequencyRepository.SaveChanges();
                    }
                }

                #endregion

                #region Vehicle CheckList Items
                //Add  Vehicle CheckList Items
                if (vehicle.VehicleCheckListItems != null)
                {
                    foreach (var item in vehicle.VehicleCheckListItems)
                    {
                        if (
                            vehicleDbVersion.VehicleCheckListItems.All(
                                x =>
                                x.VehicleCheckListItemId != item.VehicleCheckListItemId ||
                                item.VehicleCheckListItemId == 0))
                        {
                            item.UserDomainKey    = vehicleRepository.UserDomainKey;
                            item.RecLastUpdatedDt = item.RecCreatedDt = DateTime.Now;
                            item.RecLastUpdatedBy = item.RecCreatedBy = vehicleRepository.LoggedInUserIdentity;
                            item.RowVersion       = 0;

                            vehicleDbVersion.VehicleCheckListItems.Add(item);
                        }
                    }
                }
                //find missing items
                List <VehicleCheckListItem> missingCheckListItems = new List <VehicleCheckListItem>();
                foreach (VehicleCheckListItem dbversionCheckListItem in vehicleDbVersion.VehicleCheckListItems)
                {
                    if (vehicle.VehicleCheckListItems != null && vehicle.VehicleCheckListItems.All(x => x.VehicleCheckListItemId != dbversionCheckListItem.VehicleCheckListItemId))
                    {
                        missingCheckListItems.Add(dbversionCheckListItem);
                    }
                    if (vehicle.VehicleMaintenanceTypeFrequencies == null)
                    {
                        missingCheckListItems.Add(dbversionCheckListItem);
                    }
                }
                //remove missing items
                foreach (VehicleCheckListItem missingCheckListItem in missingCheckListItems)
                {
                    VehicleCheckListItem dbVersionMissingItem = vehicleDbVersion.VehicleCheckListItems.First(x => x.VehicleCheckListItemId == missingCheckListItem.VehicleCheckListItemId);
                    if (dbVersionMissingItem.VehicleCheckListItemId > 0)
                    {
                        vehicleDbVersion.VehicleCheckListItems.Remove(dbVersionMissingItem);
                        vehicleCheckListItemRepository.Delete(dbVersionMissingItem);
                        vehicleCheckListItemRepository.SaveChanges();
                    }
                }

                #endregion
            }
            vehicleRepository.SaveChanges();
            #endregion
            Vehicle vehicleResponse = vehicleRepository.Find(vehicle.VehicleId);
            vehicleRepository.LoadDependencies(vehicleResponse);
            return(vehicleResponse);
        }