/// <summary> /// The check service provider. /// </summary> /// <param name="serviceProvider"> /// The service provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> private bool CheckServiceProvider(WebsiteServiceProvider serviceProvider, int userId) { bool response; switch (serviceProvider.State) { case ObjectStatus.ObjectState.Update: response = this.UpdateProvider(serviceProvider, userId); break; case ObjectStatus.ObjectState.Delete: response = this.DeleteProvider(serviceProvider, userId); break; case ObjectStatus.ObjectState.Create: response = this.CreateServiceProvider(serviceProvider); break; default: response = false; break; } return(response); }
/// <summary> /// The reset for invalid model. /// </summary> /// <param name="provider"> The provider. </param> private void ResetForInvalidModel(WebsiteServiceProvider provider) { // Get everything set back up before sending the user back. this.SetupViewBag(); if (provider.Services == null) { provider.Services = new WebServiceAreas { ServiceAreas = new List <int>() }; } // Reset the state lists. var countryList = this.dataLogics.GetCountries(); var usa = countryList.Find(country => country.FullName == "United States"); var states = this.dataLogics.GetStates(usa.Id); foreach (var location in provider.Locations) { location.StateId = int.Parse(location.StateIdString); location.States = new SelectList(states, "Id", "Name"); if (location.Coverage == null) { location.Coverage = new List <Coverage>(); } } }
/// <summary> /// The delete provider. /// </summary> /// <param name="serviceProvider"> /// The service provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> private bool DeleteProvider(WebsiteServiceProvider serviceProvider, int userId) { var name = serviceProvider.Name; if (!this.DeleteLocations(serviceProvider.Locations)) { return(false); } if (!this.DeleteProviderServices(serviceProvider)) { return(false); } if (!this.serviceProviderRepo.DeleteProvider(serviceProvider)) { return(false); } else { return(this.serviceProviderRepo.LogServiceProviderEdit(new ServiceProviderEdit { ProviderId = null, UserId = userId, DateTime = DateTime.Now, Action = "Deleted", DeletedProviderName = serviceProvider.Name })); } }
public void MyTestInitialize() { this.controller = new ServiceProviderController(); this.originalLocation = new ServiceProviderLocation { Id = 1, StateIdString = "34", Contact = new ServiceProviderContactRequired { Id = 1223 }, Coverage = new List <Coverage> { new Coverage { CountyId = 1, CountryId = 1, Id = 2, StateId = 1 } } }; this.originalProvider = new WebsiteServiceProvider { Id = 4, Name = "Test", Type = 2, Locations = new List <ServiceProviderLocation> { this.originalLocation } }; }
/// <summary> /// The create website service provider. /// </summary> /// <param name="databaseProvider"> /// The database provider. /// </param> /// <returns> /// The <see cref="WebsiteServiceProvider"/>. /// </returns> private WebsiteServiceProvider CreateWebsiteServiceProvider(ServiceProvider databaseProvider) { var locations = new List <ServiceProviderLocation>(); foreach (var databaseLocation in databaseProvider.Locations) { var location = this.CreateLocation(databaseLocation); locations.Add(location); } var services = this.CreateProviderServices(databaseProvider); var serviceProvider = new WebsiteServiceProvider { Description = databaseProvider.Description, DisplayRank = databaseProvider.DisplayRank, Id = databaseProvider.ID, Locations = locations, Name = databaseProvider.ProviderName, State = ObjectStatus.ObjectState.Read, Services = services, Type = databaseProvider.ServiceTypes, TypeName = databaseProvider.ServiceType.Name, IsActive = databaseProvider.Active }; return(serviceProvider); }
public void GetDetailsTest() { var sampleCategory = new WebsiteCategory { Crime = false, Description = "description", Id = 1, Name = "Name", ServiceTypes = new List <WebsiteCategoryType> { new WebsiteCategoryType { Id = 2, Name = "Category1" } } }; var sampleServiceProvider = new WebsiteServiceProvider { Description = "Service Provider", DisplayRank = 3, Id = 2, IsActive = true, Name = "My Name", Type = 1, Services = new WebServiceAreas { ServiceAreas = new List <int> { 1, 3 } }, Locations = new List <ServiceProviderLocation> { new ServiceProviderLocation { Id = 1, Display = true, Name = "Location Name", City = "Dayton", Zip = "12344" } } }; var categoryList = new List <WebsiteCategory> { sampleCategory }; var controller = new SpecialPopulationsController(); using (ShimsContext.Create()) { ShimDataLogics.AllInstances.GetWebsiteCategories = logics => categoryList; ShimDatabaseToWebServiceProvider.AllInstances.GetServiceProviderInt32 = (provider, i) => sampleServiceProvider; var result = controller.Details(2, null) as ViewResult; var resultModel = result.Model; Assert.IsNotNull(result); Assert.AreEqual(sampleServiceProvider, resultModel); } }
/// <summary> /// The delete provider services. /// </summary> /// <param name="serviceProvider"> /// The service provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> private bool DeleteProviderServices(WebsiteServiceProvider serviceProvider) { var providerCoverages = this.dataAccess.GetProviderServices(serviceProvider.Id); if (providerCoverages == null || providerCoverages.Count <= 0) { return(false); } return(this.DeleteProviderServices(providerCoverages)); }
public ActionResult Details(int id, int?locationId) { DatabaseToWebServiceProvider dbConverter = new DatabaseToWebServiceProvider(); var dataLogics = new DataLogics(); WebsiteServiceProvider provider = dbConverter.GetServiceProvider(id); var categories = dataLogics.GetWebsiteCategories(); categories.Sort((category1, category2) => category1.Name.CompareTo(category2.Name)); ViewBag.AllCategories = categories; return(this.View(provider)); }
public ActionResult Create(WebsiteServiceProvider provider) { try { if (!ModelState.IsValid) { this.ResetForInvalidModel(provider); this.SetErrorMessage(); return(this.View(provider)); } // In each location, don't create a location contact if no information is given. foreach (var curLocation in provider.Locations) { curLocation.StateId = int.Parse(curLocation.StateIdString); if (this.IsContactPersonEmpty(curLocation.ContactPerson)) { curLocation.ContactPerson = null; } } var webToDb = new WebToDatabaseServiceProvider(); provider.State = ObjectStatus.ObjectState.Create; // Need an empty service areas object if no service areas were included. if (provider.Services == null) { provider.Services = new WebServiceAreas(); } webToDb.UpdateServiceProvider(provider, this.UserId); this.TempData["Info"] = string.Format("The provider {0} was created succesfully.", provider.Name); return(this.RedirectToAction("Index")); } catch (Exception ex) { this.SetupViewBag(); this.SetupLocationStateDropdown(provider); foreach (var curLocation in provider.Locations.Where(curLocation => curLocation.Coverage == null)) { curLocation.Coverage = new List <Coverage>(); } this.TempData["Error"] = "An error occured while saving the service provider."; return(this.View(provider)); } }
/// <summary> /// The create database provider. /// </summary> /// <param name="provider"> /// The provider. /// </param> /// <returns> /// The <see cref="int"/>. /// </returns> private int CreateDatabaseProvider(WebsiteServiceProvider provider) { var databaseProvider = new ServiceProvider { Description = provider.Description, DisplayRank = provider.DisplayRank, ProviderName = provider.Name, ServiceTypes = provider.Type, Active = provider.IsActive }; var providerId = this.serviceProviderRepo.CreateServiceProvider(databaseProvider); return(providerId); }
public void EditProviderLocationAddCoverageTest() { using (ShimsContext.Create()) { var updatedLocation1 = new ServiceProviderLocation { Id = 1, StateIdString = "34", Contact = new ServiceProviderContactRequired { Id = 1223 }, ContactPerson = new ServiceProviderContactPerson { Id = 0 }, Coverage = new List <Coverage> { new Coverage { CountyId = 1, CountryId = 1, Id = 2, StateId = 1 }, new Coverage { CountyId = 5, CountryId = 1, Id = 0, StateId = 1 } } }; var updatedProvider = new WebsiteServiceProvider { Id = 4, Name = "Test2", Type = 2, Locations = new List <ServiceProviderLocation> { updatedLocation1 } }; ShimDataLogics.AllInstances.GetServiceProviderByIdInt32 = (access, id) => this.originalProvider; ShimWebToDatabaseServiceProvider.AllInstances.UpdateServiceProviderWebsiteServiceProviderInt32 = (provider, serviceProvider, userId) => true; var result = this.controller.Edit(updatedProvider); Assert.AreEqual(ObjectStatus.ObjectState.Update, updatedProvider.State); Assert.AreEqual(ObjectStatus.ObjectState.Update, updatedProvider.Locations[0].Coverage[0].State); Assert.AreEqual(ObjectStatus.ObjectState.Create, updatedProvider.Locations[0].Coverage[1].State); } }
public ActionResult Edit(WebsiteServiceProvider provider) { try { if (!ModelState.IsValid) { this.ResetForInvalidModel(provider); this.SetErrorMessage(); return(this.View(provider)); } var original = this.dataLogics.GetServiceProviderById(provider.Id); if (provider.Services == null) { provider.Services = new WebServiceAreas { State = ObjectStatus.ObjectState.Update, ServiceAreas = new List <int>() }; } // Check against original locations to see which are new, and what has been removed. this.SetStateFlagsLocations(provider, original); provider.State = ObjectStatus.ObjectState.Update; var webToDb = new WebToDatabaseServiceProvider(); webToDb.UpdateServiceProvider(provider, this.UserId); this.TempData["Info"] = string.Format("The provider {0} was updated succesfully.", provider.Name); if (User.IsInRole("1")) { return(this.RedirectToAction("Index")); } return(this.RedirectToAction("Details", new { id = provider.Id })); } catch (Exception ex) { return(this.View()); } }
/// <summary> /// The create service provider. /// </summary> /// <param name="provider"> /// The provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> private bool CreateServiceProvider(WebsiteServiceProvider provider) { var databaseProviderId = this.CreateDatabaseProvider(provider); if (databaseProviderId == 0) { return(false); } var createdServiceAreas = this.CreateServiceAreas(provider.Services.ServiceAreas, databaseProviderId); if (!createdServiceAreas) { return(false); } var created = this.CreateLocations(provider.Locations, databaseProviderId); return(created); }
/// <summary> /// Setup the selected value for each location's selected state. Used when editing a provider form for an /// existing provider. Also used for repopulating a new provider's values with an error message. /// </summary> /// <param name="provider"> The provider. </param> private void SetupLocationStateDropdown(WebsiteServiceProvider provider) { // Set up the dropdowns. var countryList = this.dataLogics.GetCountries(); var usa = countryList.Find(country => country.FullName == "United States"); var states = this.dataLogics.GetStates(usa.Id); // Set up defaults for locations. foreach (var location in provider.Locations) { if (location.ContactPerson == null) { location.ContactPerson = new ServiceProviderContactPerson { Contact = new ServiceProviderContact() }; } location.StateIdString = location.StateId.ToString(CultureInfo.InvariantCulture); location.States = new SelectList(states, "Id", "Name"); } }
/// <summary> /// The update provider. /// </summary> /// <param name="serviceProvider"> /// The service provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> public bool UpdateProvider(WebsiteServiceProvider serviceProvider) { try { var databaseServiceProvider = this.db.ServiceProviders.Single(d => d.ID == serviceProvider.Id); databaseServiceProvider.Description = serviceProvider.Description; databaseServiceProvider.ProviderName = serviceProvider.Name; databaseServiceProvider.DisplayRank = serviceProvider.DisplayRank; databaseServiceProvider.Active = serviceProvider.IsActive; databaseServiceProvider.ServiceTypes = serviceProvider.Type; this.db.Entry(databaseServiceProvider).State = EntityState.Modified; this.db.SaveChanges(); return(true); } catch (Exception e) { return(false); } }
/// <summary> /// The delete provider. /// </summary> /// <param name="serviceProvider"> /// The service provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> public bool DeleteProvider(WebsiteServiceProvider serviceProvider) { try { var provider = this.db.ServiceProviders.Single(s => s.ID == serviceProvider.Id); foreach (var editRecord in provider.ServiceProviderEdits) { editRecord.DeletedProviderName = provider.ProviderName; editRecord.ProviderId = null; } this.db.SaveChanges(); this.db.ServiceProviders.Remove(provider); this.db.SaveChanges(); return(true); } catch (Exception e) { return(false); } }
public ActionResult Create() { // Load non-model related data. this.SetupViewBag(); // Create a location list with one blank location. var locationList = new List <ServiceProviderLocation> { this.BuildBlankLocation() }; // Create a blank provider with any defaults. var provider = new WebsiteServiceProvider { Locations = locationList, Services = new WebServiceAreas { ServiceAreas = new List <int>() }, Type = 1, DisplayRank = 3, }; return(this.View(provider)); }
/// <summary> /// The update provider. /// </summary> /// <param name="serviceProvider"> /// The service provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> private bool UpdateProvider(WebsiteServiceProvider serviceProvider, int userId) { if (!this.UpdateAreas(serviceProvider.Services, serviceProvider.Id)) { return(false); } if (!this.CheckLocations(serviceProvider.Locations, serviceProvider.Id)) { return(false); } var response = this.serviceProviderRepo.UpdateProvider(serviceProvider); this.serviceProviderRepo.LogServiceProviderEdit(new ServiceProviderEdit { ProviderId = serviceProvider.Id, UserId = userId, DateTime = DateTime.Now, Action = "Changed" }); return(response); }
public void EditProviderRemoveLocationTest() { using (ShimsContext.Create()) { var originalLocation2 = new ServiceProviderLocation { Id = 0, Contact = new ServiceProviderContactRequired { Id = 0 }, ContactPerson = new ServiceProviderContactPerson { Id = 0 }, Coverage = new List <Coverage> { new Coverage { CountyId = 4, CountryId = 1, Id = 2, StateId = 1 } } }; this.originalProvider.Locations.Add(originalLocation2); var updatedLocation = new ServiceProviderLocation { Id = 1, StateIdString = "34", Coverage = new List <Coverage> { new Coverage { CountyId = 1, CountryId = 1, Id = 2, StateId = 1 } }, Contact = new ServiceProviderContactRequired { Id = 2123, Email = "*****@*****.**" }, ContactPerson = new ServiceProviderContactPerson { FistName = "asdfas", LastName = "q234asdf", Contact = new ServiceProviderContact { Id = 1, Email = "*****@*****.**" } } }; var updatedProvider = new WebsiteServiceProvider { Id = 4, Name = "Test2", Type = 2, Locations = new List <ServiceProviderLocation> { updatedLocation } }; ShimDataLogics.AllInstances.GetServiceProviderByIdInt32 = (access, id) => this.originalProvider; ShimWebToDatabaseServiceProvider.AllInstances.UpdateServiceProviderWebsiteServiceProviderInt32 = (provider, serviceProvider, userId) => true; var result = this.controller.Edit(updatedProvider); Assert.AreEqual(ObjectStatus.ObjectState.Update, updatedProvider.State); Assert.AreEqual(ObjectStatus.ObjectState.Update, updatedProvider.Locations[0].State); Assert.AreEqual(ObjectStatus.ObjectState.Delete, updatedProvider.Locations[1].State); } }
/// <summary> /// Sets the state flags and puts in deleted items for the locations in a provider. /// </summary> /// <param name="provider">The updated provider</param> /// <param name="original">The original provider to compare against</param> private void SetStateFlagsLocations(WebsiteServiceProvider provider, WebsiteServiceProvider original) { // Go through each location. Add removed items back in with deleted flag. foreach (var location in provider.Locations) { location.StateId = int.Parse(location.StateIdString); location.State = location.Id == 0 ? ObjectStatus.ObjectState.Create : ObjectStatus.ObjectState.Update; // Get the original location and set the current location's new/update/delete flags var location1 = location; var originalLocationFound = original.Locations.Where(x => x.Id == location1.Id).ToList(); if (originalLocationFound.Count > 0) { // Set the flags for the contact person var originalLocation = originalLocationFound.First(); if (originalLocation.ContactPerson != null) { location.ContactPerson.State = ObjectStatus.ObjectState.Update; location.ContactPerson.Contact.State = ObjectStatus.ObjectState.Update; } // If the contact person is blank, check if the original was blank. If it wasn't delete the contact. // Otherwise keep the contact person as null. if (this.IsContactPersonEmpty(location.ContactPerson)) { if (originalLocation.ContactPerson != null) { location.ContactPerson.State = ObjectStatus.ObjectState.Delete; } else { location.ContactPerson = null; } } else { // If the original is null but now it has a contact person, create one. if (originalLocation.ContactPerson == null) { location.ContactPerson.State = ObjectStatus.ObjectState.Create; location.ContactPerson.Contact.State = ObjectStatus.ObjectState.Create; } } location.Contact.State = ObjectStatus.ObjectState.Update; this.SetStateFlagsCoverages(location, originalLocation); } else { if (this.IsContactPersonEmpty(location.ContactPerson)) { location.ContactPerson = null; } } } // Get the deleted items and set them to be deleted var deletedItems = new List <ServiceProviderLocation>(); var deletedList = from curLocation in original.Locations let found = provider.Locations.Find(x => x.Id == curLocation.Id) let hasBeenDeleted = found == null where hasBeenDeleted select curLocation; foreach (var curLocation in deletedList) { curLocation.State = ObjectStatus.ObjectState.Delete; deletedItems.Add(curLocation); } if (deletedItems.Count > 0) { provider.Locations.AddRange(deletedItems); } }
/// <summary> /// The update service provider. /// </summary> /// <param name="provider"> /// The provider. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> public bool UpdateServiceProvider(WebsiteServiceProvider provider, int userId) { return(this.CheckServiceProvider(provider, userId)); }
public void MyTestInitialize() { this.target = new WebToDatabaseServiceProvider(); this.state = new State { Abbreviation = "OH", CountryID = 1, FullName = "Ohio", ID = 1 }; this.country = new Country { Abbreviation = "USA", ID = 1, FullName = "United States of America" }; this.county = new County { ID = 1, Name = "test county", StateId = 1, State = this.state }; this.contact = new ServiceProviderContact { Email = "*****@*****.**", Id = 1, Website = "www.test.org", PhoneNumber = "9373608284", HelpLine = "9373608888", State = ObjectStatus.ObjectState.Update }; this.locationContact = new ServiceProviderContactRequired { Email = "*****@*****.**", Id = 1, Website = "www.test.org", PhoneNumber = "9373608284", HelpLine = "9373608888", State = ObjectStatus.ObjectState.Update }; this.contactPerson = new ServiceProviderContactPerson { Id = 1, Contact = this.contact, FistName = "test", LastName = "user", JobTitle = "Tester", State = ObjectStatus.ObjectState.Update }; this.coverage1 = new Coverage { CountryId = 1, CountryName = "USA", CountyId = 1, CountyName = "Clark", Id = 1, State = ObjectStatus.ObjectState.Update, StateId = 1, StateName = "Ohio" }; this.coverage2 = new Coverage { CountryId = 1, CountryName = "USA", CountyId = 2, CountyName = "Clark 2", Id = 1, State = ObjectStatus.ObjectState.Update, StateId = 1, StateName = "Ohio" }; this.coverageList = new List <Coverage> { this.coverage1, this.coverage2 }; this.location1 = new ServiceProviderLocation { Name = "Location1", Coverage = this.coverageList, CountryId = 1, Contact = this.locationContact, ContactPerson = this.contactPerson, City = "testville 1", Id = 1, Display = true, Zip = "45344", Street = "Test way 1", StateId = this.state.ID, State = ObjectStatus.ObjectState.Update }; this.location2 = new ServiceProviderLocation { Name = "Location2", Coverage = this.coverageList, CountryId = 1, Contact = this.locationContact, City = "testville 2", Id = 2, Display = true, Zip = "45344", Street = "Test way 2", StateId = this.state.ID, State = ObjectStatus.ObjectState.Update }; this.locations = new List <ServiceProviderLocation> { this.location1, this.location2 }; this.webServiceAreas = new WebServiceAreas { ServiceAreas = new List <int> { 1, 2, 3 }, State = ObjectStatus.ObjectState.Update }; this.websiteServiceProvider = new WebsiteServiceProvider { Locations = this.locations, Services = this.webServiceAreas, Description = "Test Web Provider", DisplayRank = 1, Id = 1, Name = "test provider 1", Type = 1, IsActive = true, State = ObjectStatus.ObjectState.Update }; }