public MaintenanceCompany FirstMaintenanceCompany()
        {
            var firstMaintenanceCompany = new MaintenanceCompany {

                 CompanyId = 0
            ,
                 Name = null,
                 Website = null,
                 Address = null,
                 EmailAddress = null,
                 Description = null,
                 GUID = new Guid()
            ,
                 VCard = null,
                 Skype = null,
                 Twitter = null,
                 LinkedIn = null,
                 GooglePlus = null,
                 Photo = null,
                 GoogleMap = null,
                 Country = null,
                 Region = null,
                 City = null,
                 Zip = null,
                 MaintenanceCompanyLookUp = new MaintenanceCompanyLookUp()

             };

            return firstMaintenanceCompany;
        }
        public void UpdateSpecialistProfile(MaintenanceCompany m)
        {
            var specialist = GetSpecialist();

            if (specialist == null) return;
            if (!string.IsNullOrEmpty(m.Address))
            {
                specialist.Address = m.Address;
            }
            if (!string.IsNullOrEmpty(m.Zip))
            {
                specialist.Zip = m.Zip;
            }

            if (!string.IsNullOrEmpty(m.City))
            {
                specialist.City = m.City;
            }
            if (!string.IsNullOrEmpty(m.Region))
            {
                specialist.Region = m.Region;
            }
            if (!string.IsNullOrEmpty(m.Country))
            {
                specialist.Country = m.Country;
            }
            if (!string.IsNullOrEmpty(m.Description))
            {
                specialist.Description = m.Description;
            }
            specialist.GoogleMap = m.GoogleMap = SpecialistGoogleMap();
        }
        /// Initialize ProfileByType
        public void SpecialistInitialProfileValues(RegisterModel model, int specialistId)
        {
            if (specialistId != 0)
            {
                var nextCompanyId =
                    UnitofWork.MaintenanceCompanyLookUpRepository.All.OrderByDescending(x => x.CompanyId)
                        .First()
                        .CompanyId + 1;
                var newMaintenanceCompanyLookUp = new MaintenanceCompanyLookUp
                {
                    CompanyId = nextCompanyId,
                    UserId = specialistId,
                    Role = (int) LookUpRoles.Roles.Specialist
                };
                var newMaintenanceCompany = new MaintenanceCompany
                {
                    CompanyId = nextCompanyId,
                    Name = model.UserName,
                    EmailAddress = model.Email,
                    GoogleMap = "USA",
                    Country = "US",
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                    //   CountryCode = "US"
                };
                var newMaintenanceCompanySpecialization = new MaintenanceCompanySpecialization
                {
                    CompanyId = nextCompanyId,
                    NumberofEmployee = 1,
                    NumberofCertifitedEmplyee = 1,
                    IsInsured = true,
                    Rate = 50,
                    CurrencyID = 1,
                    Currency = "USD",
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var newMaintenanceCustomService = new MaintenanceCustomService
                {
                    CompanyId = nextCompanyId,
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var newMaintenanceExterior = new MaintenanceExterior
                {
                    CompanyId = nextCompanyId,
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var newMaintenanceInterior = new MaintenanceInterior
                {
                    CompanyId = nextCompanyId,
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var newMaintenanceNewConstruction = new MaintenanceNewConstruction
                {
                    CompanyId = nextCompanyId,
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var newMaintenanceRepair = new MaintenanceRepair
                {
                    CompanyId = nextCompanyId,
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var newMaintenanceUtility = new MaintenanceUtility
                {
                    CompanyId = nextCompanyId,
                    MaintenanceCompanyLookUp = newMaintenanceCompanyLookUp
                };
                var specialistwork = new SpecialistWork
                {
                    PhotoPath = "./../images/dotimages/home-handyman-projects.jpg",
                    SpecialistId = specialistId
                };

                UnitofWork.MaintenanceCompanyLookUpRepository.Add(newMaintenanceCompanyLookUp);
                UnitofWork.MaintenanceCompanyRepository.Add(newMaintenanceCompany);
                UnitofWork.MaintenanceCompanySpecializationRepository.Add(newMaintenanceCompanySpecialization);
                UnitofWork.MaintenanceCustomServiceRepository.Add(newMaintenanceCustomService);
                UnitofWork.MaintenanceExteriorRepository.Add(newMaintenanceExterior);
                UnitofWork.MaintenanceInteriorRepository.Add(newMaintenanceInterior);
                UnitofWork.MaintenanceNewConstructionRepository.Add(newMaintenanceNewConstruction);
                UnitofWork.MaintenanceRepairRepository.Add(newMaintenanceRepair);
                UnitofWork.MaintenanceUtilityRepository.Add(newMaintenanceUtility);
                UnitofWork.SpecialistWorkRepository.Add(specialistwork);
                UnitofWork.Save();

            }
        }
 public int SpecialistPrivateCalculateNewProfileCompletionPercentage(MaintenanceCompany m)
 {
     return SpecialistPrivateProfileHelper.SpecialistPrivateCalculateNewProfileCompletionPercentage(m);
 }
        public int SpecialistPrivateCalculateNewProfileCompletionPercentage(MaintenanceCompany m)
        {
            //Calucation of Completion
            //description = 20 ; Other = 10

            //Members of formula
            //Name
            //Address
            //EmailAddress
            //Description
            //Country
            //Region
            //City
            //Zip
            //CountryCode

            var initialValue = 0;

            if (!string.IsNullOrEmpty(m.Name))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Address))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.EmailAddress))
            {
                initialValue += 30;
            }
            if (!string.IsNullOrEmpty(m.Description))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Region))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.City))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Zip))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Country))
            {
                initialValue += 10;
            }
            m.GoogleMap = string.IsNullOrEmpty(m.Address) ? UserHelper.GetFormattedLocation("", "", "USA") : UserHelper.GetFormattedLocation(m.Address, m.City, m.Country);
            return initialValue >= 50 ? initialValue : 50;
        }
 public int CalculateNewProviderProfileCompletionPercentage(MaintenanceCompany m)
 {
     return ProviderPrivateProfileHelper.CalculateNewProviderProfileCompletionPercentage(m);
 }
 public void UpdateSpecialistProfile(MaintenanceCompany m)
 {
     SpecialistPrivateProfileHelper.UpdateSpecialistProfile(m);
 }
 public void UpdateproviderProfile(MaintenanceProvider p, MaintenanceCompany m)
 {
     ProviderPrivateProfileHelper.UpdateproviderProfile(p, m);
 }
        // ReSharper disable once FunctionComplexityOverflow
        public void UpdateproviderProfile(MaintenanceProvider p, MaintenanceCompany m)
        {
            var providerId = UserHelper.GetProviderId();
            var provider = UnitofWork.MaintenanceProviderRepository.FirstOrDefault(x => x.MaintenanceProviderId == providerId);
            if (provider == null) return;
            if (!string.IsNullOrEmpty(m.VCard))
            {
                provider.VCard = m.VCard;
            }
            if (!string.IsNullOrEmpty(m.Skype))
            {
                provider.Skype = m.Skype;
            }
            if (!string.IsNullOrEmpty(m.Twitter))
            {
                provider.Twitter = m.Twitter;
            }
            if (!string.IsNullOrEmpty(m.LinkedIn))
            {
                provider.LinkedIn = m.LinkedIn;
            }
            if (!string.IsNullOrEmpty(m.GooglePlus))
            {
                provider.GooglePlus = m.GooglePlus;
            }

            if (!string.IsNullOrEmpty(m.Address))
            {
                provider.Address = m.Address;
            }
            if (!string.IsNullOrEmpty(m.Country))
            {
                provider.Country = m.Country;
            }
            if (!string.IsNullOrEmpty(m.Region))
            {
                provider.City = m.Region;
            }
            if (!string.IsNullOrEmpty(m.City))
            {
                provider.City = m.City;
            }
            if (!string.IsNullOrEmpty(m.Zip))
            {
                provider.Zip = m.Zip;
            }
            if (!string.IsNullOrEmpty(m.Description))
            {
                provider.Description = m.Description;
            }
            provider.GoogleMap =
                m.GoogleMap =
                string.IsNullOrEmpty(m.Address)
                    ? UserHelper.GetFormattedLocation("", "", "USA")
                    : UserHelper.GetFormattedLocation(m.Address, m.City, m.Country);
            provider.YouTubeVideo = p.YouTubeVideo;
            provider.YouTubeVideoURL = p.YouTubeVideoURL;
            provider.VimeoVideo = p.VimeoVideo;
            provider.VimeoVideoURL = p.VimeoVideoURL;
        }
        /// <summary>
        /// Calculation of Completion
        /// description = 20 ; Other = 10
        /// 
        /// Members of formula 
        /// Name 
        /// Address 
        /// EmailAddress 
        /// Description 
        /// Country 
        /// Region 
        /// City 
        /// Zip 
        /// CountryCode
        /// </summary>
        public int CalculateNewProviderProfileCompletionPercentage(MaintenanceCompany m)
        {
            var initialValue = 0;

            if (!string.IsNullOrEmpty(m.Name))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Address))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.EmailAddress))
            {
                initialValue += 30;
            }
            if (!string.IsNullOrEmpty(m.Description))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Region))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.City))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Zip))
            {
                initialValue += 10;
            }
            if (!string.IsNullOrEmpty(m.Country))
            {
                initialValue += 10;
            }
            m.GoogleMap = string.IsNullOrEmpty(m.Address)
                              ? UserHelper.GetFormattedLocation("", "", "USA")
                              : UserHelper.GetFormattedLocation(m.Address, m.City, m.Country);
            return initialValue >= 50 ? initialValue : 50;
        }