public void AddNewMaintenanceProviderZone(MaintenanceProviderZone maintenanceproviderzone, List<MaintenanceProviderZone> maintenanceProviderZones)
        {
            var providerId = GetProvider().MaintenanceProviderId;
            var teamMemberCount = 0;
            if (maintenanceProviderZones.Any())
            {

                teamMemberCount =
                    UnitofWork.MaintenanceTeamAssociationRepository.Count(
                        x => x.MaintenanceProviderId == providerId);
            }
            //Validation To Not Exceed the allowed number of zones
            var availablezoneplaceholder =
                UnitofWork.MaintenanceTeamAssociationRepository.Count(x => x.MaintenanceProviderId == providerId)*2 + 1;
            var zoneplaceholderused = UserHelper.ProviderPrivateProfileHelper.GetAllZonesUsedCount();
            if (availablezoneplaceholder > zoneplaceholderused)
            {
                UnitofWork.MaintenanceProviderZoneRepository.Add(
                    new MaintenanceProviderZone
                    {
                        CityName = maintenanceproviderzone.CityName,
                        Country = "US",
                        MaintenanceProviderId = providerId,
                        ZipCode = maintenanceproviderzone.ZipCode,
                        TeamMemberCount = teamMemberCount + 1
                    }
                    );
            }
            UnitofWork.Save();
        }
        public MaintenanceProviderZone SecondMaintenanceProviderZone()
        {
            var secondMaintenanceProviderZone = new MaintenanceProviderZone {

                 MaintenanceProviderZoneId = new Int32()
            ,
                 MaintenanceProviderId = new Int32()
            ,
                 CityName = null,
                 Country = null,
                 ZipCode = null,
                 TeamMemberCount = new Int32()

             };

            return secondMaintenanceProviderZone;
        }
 public ActionResult AddZone(MaintenanceProviderZone maintenanceProviderZone)
 {
     var maintenanceProviderZones = UnitofWork.MaintenanceProviderZoneRepository.
             FindBy(x => x.MaintenanceProviderId == UserHelper.ProviderPrivateProfileHelper.
             GetProvider().MaintenanceProviderId).ToList();
     if (UserHelper.ProviderPrivateProfileHelper.IsProviderZoneAlreadyExist(maintenanceProviderZone, maintenanceProviderZones))
     {
         ModelState.AddModelError("Zone Duplication ", @"Zone already exist in your list");
         JNotify("This Zone already exist in your list.", "#");
     }
     if (ModelState.IsValid)
     {
         UserHelper.ProviderPrivateProfileHelper.AddNewMaintenanceProviderZone(maintenanceProviderZone, maintenanceProviderZones);
         JNotify("Your zone has been added.", "/Provider/#coverage");
         return View();
     }
     return View(maintenanceProviderZone);
 }
 public ActionResult UpdateZoneConfirmed(MaintenanceProviderZone maintenanceproviderzone)
 {
     var maintenanceProviderZones = UserHelper.ProviderPrivateProfileHelper.GetAllProviderZones();
     if (UserHelper.ProviderPrivateProfileHelper.IsProviderZoneAlreadyExist(maintenanceproviderzone, maintenanceProviderZones))
     {
         ModelState.AddModelError("Zone Duplication ", @"Zone already exist in your list");
         JNotify("This Zone already exist in your list.", "#");
     }
     if (ModelState.IsValid)
     {
         var jNotifyMessage = UserHelper.ProviderPrivateProfileHelper.UpdateZone(maintenanceproviderzone);
         JNotify(jNotifyMessage.Message, jNotifyMessage.RedirectUrl);
     }
     return View(maintenanceproviderzone);
 }
 public JNotifyMessage RemoveProviderZone(MaintenanceProviderZone maintenanceproviderzone)
 {
     return ProviderPrivateProfileHelper.RemoveProviderZone(maintenanceproviderzone);
 }
 public bool IsProviderZoneAlreadyExist(MaintenanceProviderZone maintenanceproviderzone, List<MaintenanceProviderZone> maintenanceProviderZones)
 {
     return ProviderPrivateProfileHelper.IsProviderZoneAlreadyExist(maintenanceproviderzone, maintenanceProviderZones);
 }
 public void AddNewMaintenanceProviderZone(MaintenanceProviderZone maintenanceproviderzone, List<MaintenanceProviderZone> maintenanceProviderZones)
 {
     ProviderPrivateProfileHelper.AddNewMaintenanceProviderZone(maintenanceproviderzone, maintenanceProviderZones);
 }
        public JNotifyMessage UpdateZone(MaintenanceProviderZone maintenanceproviderzone)
        {
            // var currentMaintenanceProviderzone = UnitofWork.MaintenanceProviderZoneRepository.FirstOrDefault( x => x.MaintenanceProviderZoneId == maintenanceproviderzone.MaintenanceProviderZoneId);
            if (UserHelper.ProviderPrivateProfileHelper.IsZipcodeBelongtoTeamMember(UserHelper.ProviderPrivateProfileHelper.GetProvider().MaintenanceProviderId, maintenanceproviderzone.ZipCode))
            {
                //Zip exist in the team list zip
                ModelState.AddModelError("Zone Update ", @"Your can not update your Team Member Zone. The Zone Coverage is based upon Team Member Profile");
                return new JNotifyMessage("Your can not update your Team Member Zone. The Zone Coverage is based upon Team Member Profile", "/Provider/#coverage");

            }
            if (UserHelper.ProviderPrivateProfileHelper.GetProvider().Zip != null && UserHelper.ProviderPrivateProfileHelper.GetProvider().Zip == maintenanceproviderzone.ZipCode)
            {
                //same zip as the provider
                ModelState.AddModelError("Zone Update ", @"Your can not update your Team Member Zone. The Zone Coverage is based upon Team Member Profile");
                return new JNotifyMessage("Your can not update your Zone from this section. Please update your profile to reflect the new zone", "/Provider/#coverage");
            }
            //Update the Zone
            var oldzone = UnitofWork.MaintenanceProviderZoneRepository.First(x => x.MaintenanceProviderZoneId == maintenanceproviderzone.MaintenanceProviderZoneId);
            if (oldzone != null)
            {
                oldzone.CityName = maintenanceproviderzone.CityName;
                oldzone.ZipCode = maintenanceproviderzone.ZipCode;
                UnitofWork.Save();
            }
            return new JNotifyMessage("Your zone has been updated.", "/Provider/#coverage");
        }
 public JNotifyMessage RemoveProviderZone(MaintenanceProviderZone maintenanceproviderzone)
 {
     if (IsZipcodeBelongtoTeamMember(GetProvider().MaintenanceProviderId, maintenanceproviderzone.ZipCode))
     {
         return new JNotifyMessage("Your can not delete your Team Member Zone. The Zone Coverage is based upon Team Member Profile", "#");
     }
     else
     {
         return DeleteMaintenanceProviderZone(maintenanceproviderzone);
     }
 }
 public bool IsProviderZoneAlreadyExist(MaintenanceProviderZone maintenanceproviderzone, List<MaintenanceProviderZone> maintenanceProviderZones)
 {
     return maintenanceProviderZones.Exists(x => x.ZipCode == maintenanceproviderzone.ZipCode);
 }
 public JNotifyMessage DeleteMaintenanceProviderZone(MaintenanceProviderZone maintenanceproviderzone)
 {
     if (maintenanceproviderzone.ZipCode != GetProvider().Zip)
     {
         UnitofWork.MaintenanceProviderZoneRepository.Delete(maintenanceproviderzone);
         var teamMemberCount = GetmNumberofMembersInTeam();
         maintenanceproviderzone.TeamMemberCount = teamMemberCount - 1;
         UnitofWork.Save();
         return new JNotifyMessage("Your zone has been deleted.", "/Provider/#coverage");
     }
     else
     {
         return new JNotifyMessage("Your can not delete your own zone.Update your profile instead", "#");
     }
 }