public ActionResult UpdateEmptyLatLong(int[] companyId) { GeoLocator locator = new GeoLocator(); CompanyProfile company; try { for (int i = 0; i < companyId.Length; i++) { company = _service.Get(companyId[i]); if (company.Id != 1) { if (company.Address1 == null && company.City == null && company.StateId != null && company.PostalCode != null) { company.GeoLocation = locator.GetFromStateZip(company.State.Abbr, company.PostalCode); _service.Update(company); } else if ((company.Address1 == null || company.Address1 == string.Empty) && company.StateId != null && company.PostalCode != null) { company.GeoLocation = locator.GetFromCityStateZip(company.City, company.State.Abbr, company.PostalCode); _service.Update(company); } else if ((company.Address1 != null && company.Address1 != string.Empty) && (company.City != null && company.City != string.Empty) && company.StateId != null && company.PostalCode != null) { company.GeoLocation = locator.GetFromAddress(company.Address1, company.City, company.State.Abbr, company.PostalCode); _service.Update(company); } } } return RedirectToAction("Index"); } catch (Exception ex) { throw new HttpException(500, ex.Message); } }
public IEnumerable<BCModel.CompanyProfile> SearchCompanyProfiles(string city, string state, string postal, double distance) { // call up the locator GeoLocator locator = new GeoLocator(); // get a search point DbGeography searchPoint = locator.GetFromAddress("", city, state, postal); var results = from c in _repo.Query() where (c.GeoLocation.Distance(searchPoint).Value * 0.00062137) <= distance select c; return results.AsEnumerable(); }
public IEnumerable<BCModel.CompanyProfile> SearchCompanyProfiles(int projectEntityId, ProjectEntityType type) { IEnumerable<CompanyProfile> result; GeoLocator locator = new GeoLocator(); // call up the locator BidPackage theBp; DbGeography searchPoint; int projectIdforLocation = 0; switch (type) { case ProjectEntityType.bidPackage: theBp = _repo.FindBidPackage(projectEntityId); projectIdforLocation = theBp.ProjectId; searchPoint = _repo.FindProject(projectIdforLocation).GeoLocation; int[] bpScopes = theBp.Scopes.Where(s => s.Scope.Children == null).Select(s => s.ScopeId).ToArray(); result = from c in _repo.Query() where c.Scopes.Any(s => bpScopes.Contains(s.ScopeId)) && (c.GeoLocation.Distance(searchPoint).Value * 0.00062137) <= c.OperatingDistance select c; return result.ToList(); case ProjectEntityType.project: projectIdforLocation = projectEntityId; searchPoint = _repo.FindProject(projectIdforLocation).GeoLocation; result = from c in _repo.Query() where (c.GeoLocation.Distance(searchPoint).Value * 0.00062137) <= c.OperatingDistance select c; return result.ToList(); default: throw new Exception("unknown entity type"); } }
public ActionResult CreateStepTwo(ProjectEditModel viewModel) { if (!viewModel.ProjectCategory.HasValue) ModelState.AddModelError("ProjectCategory", "Project Category is required"); if (!viewModel.ProjectType.HasValue) ModelState.AddModelError("ProjectType", "Project Type is required"); if (ModelState.IsValid) { try { int userId = _security.GetUserId(User.Identity.Name); int companyId = _service.GetUserProfile(userId).CompanyId; // create project BCModel.Projects.Project toCreate = new BCModel.Projects.Project { Number = viewModel.Number, ArchitectId = viewModel.ArchitectId, Address = viewModel.Address, BidDateTime = viewModel.BidDateTime, BuildingTypeId = viewModel.BuildingTypeId, City = viewModel.City, ConstructionTypeId = viewModel.ConstructionTypeId, CreatedById = userId, Description = viewModel.Description, PostalCode = viewModel.PostalCode, ProjectType = viewModel.ProjectType.Value, ProjectCategory = viewModel.ProjectCategory.Value, StateId = viewModel.StateId, Title = viewModel.Title, Scopes = new List<ProjectXScope>(), BidPackages = new List<BidPackage>(), WalkThruDateTime = viewModel.WalkThruDateTime, WalkThruStatus = viewModel.WalkThruStatus.Value, HiddenFromSearch = viewModel.HiddenFromSearch, InvitationOnly = viewModel.InvitationOnly }; GeoLocator locator = new GeoLocator(); string state = _service.GetStates().Where(x => x.Id == viewModel.StateId).FirstOrDefault().Abbr; if (viewModel.Address == null || viewModel.Address == string.Empty) { toCreate.GeoLocation = locator.GetFromCityStateZip(viewModel.City, state, viewModel.PostalCode); } else { toCreate.GeoLocation = locator.GetFromAddress(viewModel.Address, viewModel.City, state, viewModel.PostalCode); } // create master bid package BidPackage projectPackage = new BidPackage { IsMaster = true, BidDateTime = toCreate.BidDateTime, Description = "Master Bid Package", CreatedById = viewModel.ArchitectId, Project = toCreate, Scopes = new List<BidPackageXScope>(), Invitees = new List<Invitation>() }; // if user is a GC, self-invite if (_security.IsUserInRole("general_contractor")) { projectPackage.Invitees.Add(new Invitation { BidPackage = projectPackage, SentToId = companyId, SentDate = DateTime.Now, AcceptedDate = DateTime.Now, InvitationType = InvitationType.SentFromCreatedBy }); } // add bp to project toCreate.BidPackages.Add(projectPackage); // set selected scopes for bp and project for (int i = 0; i < viewModel.SelectedScope.Count(); i++) { toCreate.Scopes.Add(new ProjectXScope { Project = toCreate, ScopeId = viewModel.SelectedScope.ElementAt(i) }); projectPackage.Scopes.Add(new BidPackageXScope { BidPackage = projectPackage, ScopeId = viewModel.SelectedScope.ElementAt(i) }); } // add project to system if (_service.Create(toCreate)) { return RedirectToRoute("Default", new { controller = "Project", action = "Details", id = toCreate.Id }); } else { Util.MapValidationErrors(_service.ValidationDic, this.ModelState); rePopViewModel(viewModel); return View("CreateStepTwo", viewModel); } } catch (Exception ex) { ModelState.AddModelError("Exception", ex.Message); rePopViewModel(viewModel); return View("CreateStepTwo", viewModel); } } // modelstate is not valid rePopViewModel(viewModel); return View("CreateStepTwo", viewModel); }
public IEnumerable<BCModel.CompanyProfile> SearchCompanyProfiles(BCModel.BusinessType[] types, string city, string state, string postal, double distance, int[] scopes) { // call up the locator GeoLocator locator = new GeoLocator(); // get a search point DbGeography searchPoint = locator.GetFromAddress("", city, state, postal); var results = from c in _repo.Query() where types.Contains(c.BusinessType) && c.Scopes.Any(s => scopes.Contains(s.ScopeId)) && (c.GeoLocation.Distance(searchPoint).Value * 0.00062137) <= distance select c; return results.AsEnumerable(); }
public ActionResult Edit(EditCompanyViewModel viewModel) { if (ModelState.IsValid) { // get company int userId = _security.GetUserId(User.Identity.Name); var company = _serviceLayer.GetUserProfiles(u => u.UserId == userId).FirstOrDefault().Company; if (viewModel.Address1 != null) company.Address1 = viewModel.Address1.Trim(); if (viewModel.Address2 != null) company.Address2 = viewModel.Address2.Trim(); company.City = viewModel.City; company.CompanyName = viewModel.CompanyName.Trim(); company.OperatingDistance = viewModel.OperatingDistance; company.Phone = Util.ConvertPhoneForStorage(viewModel.Phone.Trim()); company.PostalCode = viewModel.PostalCode.Trim(); //company.StateId = viewModel.StateId; company.State = _serviceLayer.GetState(viewModel.StateId.Value); GeoLocator locator = new GeoLocator(); if (company.Address1 == null && company.City == null && company.StateId != null && company.PostalCode != null) { company.GeoLocation = locator.GetFromStateZip(company.State.Abbr, company.PostalCode); } else if ((company.Address1 == null || company.Address1 == string.Empty) && company.StateId != null && company.PostalCode != null) { company.GeoLocation = locator.GetFromCityStateZip(company.City, company.State.Abbr, company.PostalCode); } else if ((company.Address1 != null && company.Address1 != string.Empty) && (company.City != null && company.City != string.Empty) && company.StateId != null && company.PostalCode != null) { company.GeoLocation = locator.GetFromAddress(company.Address1, company.City, company.State.Abbr, company.PostalCode); } // did business type change? if (company.BusinessType != viewModel.BusinessType) { // add new role for all users in company switch (viewModel.BusinessType.Value) { case BusinessType.GeneralContractor: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "general_contractor"); break; case BusinessType.SubContractor: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "subcontractor"); break; case BusinessType.Architect: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "architect"); break; case BusinessType.Engineer: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "engineer"); break; case BusinessType.Owner: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "owner_client"); break; case BusinessType.MaterialsVendor: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "materials_vendor"); break; case BusinessType.MaterialsMfg: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "materials_manufacturer"); break; case BusinessType.Consultant: _security.AddUsersToRole(company.Users.Select(x => x.Email).ToArray(), "consultant"); break; }; // remove old role for all users in company switch (company.BusinessType) { case BusinessType.GeneralContractor: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "general_contractor"); break; case BusinessType.SubContractor: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "subcontractor"); break; case BusinessType.Architect: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "architect"); break; case BusinessType.Engineer: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "engineer"); break; case BusinessType.Owner: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "owner_client"); break; case BusinessType.MaterialsVendor: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "materials_vendor"); break; case BusinessType.MaterialsMfg: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "materials_manufacturer"); break; case BusinessType.Consultant: _security.RemoveUsersFromRole(company.Users.Select(x => x.Email).ToArray(), "consultant"); break; }; // update company business type company.BusinessType = viewModel.BusinessType.Value; } // update changes in the database if (_serviceLayer.Update(company)) { return RedirectToRoute("Default", new { controller = "Account", action = "Manage", message = ManageMessageId.ChangeCompanyInfoSuccess }); } else { Util.MapValidationErrors(_serviceLayer.ValidationDic, this.ModelState); viewModel.States = _serviceLayer.GetStates().Select(x => new SelectListItem { Text = x.Abbr, Value = x.Id.ToString(), Selected = x.Id == viewModel.StateId }); //viewModel.BusinessTypes = _serviceLayer.GetBusinessTypes().Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString(), Selected = x.Id == viewModel.BusinessTypeId }); return View(viewModel); } } else { viewModel.States = _serviceLayer.GetStates().Select(x => new SelectListItem { Text = x.Abbr, Value = x.Id.ToString(), Selected = x.Id == viewModel.StateId }); //viewModel.BusinessTypes = _serviceLayer.GetBusinessTypes().Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString(), Selected = x.Id == viewModel.BusinessTypeId }); return View(viewModel); } }
public ActionResult Create(BCWeb.Areas.Admin.Models.Projects.ViewModel.ProjectEditModel viewModel) { if (!viewModel.ProjectCategory.HasValue) ModelState.AddModelError("ProjectCategory", "Project Category is required"); if (!viewModel.ProjectType.HasValue) ModelState.AddModelError("ProjectType", "Project Type is required"); if (ModelState.IsValid) { BCModel.Projects.Project toCreate = new BCModel.Projects.Project { Address = viewModel.Address, ArchitectId = viewModel.ArchitectId, BidDateTime = viewModel.BidDateTime, BuildingTypeId = viewModel.BuildingTypeId, City = viewModel.City, ConstructionTypeId = viewModel.ConstructionTypeId, CreatedById = viewModel.CreatedById, Description = viewModel.Description, Number = viewModel.Number, PostalCode = viewModel.PostalCode, ProjectCategory = viewModel.ProjectCategory.Value, ProjectType = viewModel.ProjectType.Value, StateId = viewModel.StateId, Title = viewModel.Title, BidPackages = new List<BidPackage>(), Scopes = new List<ProjectXScope>(), WalkThruDateTime = viewModel.WalkThruDateTime, WalkThruStatus = viewModel.WalkThruStatus.Value }; GeoLocator locator = new GeoLocator(); State projectState = _service.GetState(viewModel.StateId); if (viewModel.Address == null && viewModel.City == null && viewModel.StateId != null && viewModel.PostalCode != null) { toCreate.GeoLocation = locator.GetFromStateZip(projectState.Abbr, viewModel.PostalCode); } else if ((viewModel.Address == null || viewModel.Address == string.Empty) && viewModel.StateId != null && viewModel.PostalCode != null) { toCreate.GeoLocation = locator.GetFromCityStateZip(viewModel.City, projectState.Abbr, viewModel.PostalCode); } else if ((viewModel.Address != null && viewModel.Address != string.Empty) && (viewModel.City != null && viewModel.City != string.Empty) && viewModel.StateId != null && viewModel.PostalCode != null) { toCreate.GeoLocation = locator.GetFromAddress(viewModel.Address, viewModel.City, projectState.Abbr, viewModel.PostalCode); } BidPackage projectPackage = new BidPackage { IsMaster = true, BidDateTime = toCreate.BidDateTime, Description = "Master Bid Package", CreatedById = viewModel.ArchitectId, Project = toCreate, Scopes = new List<BidPackageXScope>(), Invitees = new List<Invitation>() }; UserProfile createdBy = _service.GetUserProfile(viewModel.CreatedById); // if createdby is a GC, self-invite if (createdBy.Company.BusinessType == BusinessType.GeneralContractor) { projectPackage.Invitees.Add(new Invitation { BidPackage = projectPackage, SentToId = viewModel.CreatedById, SentDate = DateTime.Now, AcceptedDate = DateTime.Now, InvitationType = InvitationType.SentFromCreatedBy }); } // add bp to project toCreate.BidPackages.Add(projectPackage); // set selected scopes for bp and project for (int i = 0; i < viewModel.SelectedScope.Count(); i++) { toCreate.Scopes.Add(new ProjectXScope { Project = toCreate, ScopeId = viewModel.SelectedScope.ElementAt(i) }); projectPackage.Scopes.Add(new BidPackageXScope { BidPackage = projectPackage, ScopeId = viewModel.SelectedScope.ElementAt(i) }); } // add project to system if (_service.Create(toCreate)) { return RedirectToAction("Index"); } else { Util.MapValidationErrors(_service.ValidationDic, this.ModelState); } } rePopVieModel(viewModel); return View(); }
public ActionResult UpdateEmptyLatLong(int[] projectId) { GeoLocator locator = new GeoLocator(); BCModel.Projects.Project theProject; for (int i = 0; i < projectId.Length; i++) { theProject = _service.Get(projectId[i]); if (theProject.Address == null && theProject.City == null && theProject.StateId != null && theProject.PostalCode != null) { theProject.GeoLocation = locator.GetFromStateZip(theProject.State.Abbr, theProject.PostalCode); _service.Update(theProject); } else if ((theProject.Address == null || theProject.Address == string.Empty) && theProject.StateId != null && theProject.PostalCode != null) { theProject.GeoLocation = locator.GetFromCityStateZip(theProject.City, theProject.State.Abbr, theProject.PostalCode); _service.Update(theProject); } else if ((theProject.Address != null && theProject.Address != string.Empty) && (theProject.City != null && theProject.City != string.Empty) && theProject.StateId != null && theProject.PostalCode != null) { theProject.GeoLocation = locator.GetFromAddress(theProject.Address, theProject.City, theProject.State.Abbr, theProject.PostalCode); _service.Update(theProject); } } return RedirectToAction("Index"); }
public ActionResult Edit(BCWeb.Areas.Admin.Models.Projects.ViewModel.ProjectEditModel viewModel) { BCModel.Projects.Project toUpdate = _service.Get(viewModel.Id); toUpdate.Address = viewModel.Address; toUpdate.ArchitectId = viewModel.ArchitectId; toUpdate.BidDateTime = viewModel.BidDateTime; toUpdate.BuildingTypeId = viewModel.BuildingTypeId; toUpdate.City = viewModel.City; toUpdate.ConstructionTypeId = viewModel.ConstructionTypeId; toUpdate.CreatedById = viewModel.CreatedById; toUpdate.Description = viewModel.Description; toUpdate.Number = viewModel.Number; toUpdate.PostalCode = viewModel.PostalCode; toUpdate.ProjectCategory = viewModel.ProjectCategory.Value; toUpdate.ProjectType = viewModel.ProjectType.Value; toUpdate.StateId = viewModel.StateId; toUpdate.Title = viewModel.Title; toUpdate.BidPackages = new List<BidPackage>(); toUpdate.Scopes = new List<ProjectXScope>(); toUpdate.WalkThruDateTime = viewModel.WalkThruDateTime; toUpdate.WalkThruStatus = viewModel.WalkThruStatus.Value; GeoLocator locator = new GeoLocator(); State projectState = _service.GetState(viewModel.StateId); if (viewModel.Address == null && viewModel.City == null && viewModel.StateId != null && viewModel.PostalCode != null) { toUpdate.GeoLocation = locator.GetFromStateZip(projectState.Abbr, viewModel.PostalCode); } else if ((viewModel.Address == null || viewModel.Address == string.Empty) && viewModel.StateId != null && viewModel.PostalCode != null) { toUpdate.GeoLocation = locator.GetFromCityStateZip(viewModel.City, projectState.Abbr, viewModel.PostalCode); } else if ((viewModel.Address != null && viewModel.Address != string.Empty) && (viewModel.City != null && viewModel.City != string.Empty) && viewModel.StateId != null && viewModel.PostalCode != null) { toUpdate.GeoLocation = locator.GetFromAddress(viewModel.Address, viewModel.City, projectState.Abbr, viewModel.PostalCode); } try { if (_service.Update(toUpdate)) { return RedirectToAction("Details", new { id = toUpdate.Id }); } else { Util.MapValidationErrors(_service.ValidationDic, ModelState); } } catch (Exception ex) { ModelState.AddModelError("Exception", ex.Message); } rePopVieModel(viewModel); return View(viewModel); }
public ActionResult Register(RegisterModel model) { RecaptchaVerificationHelper recaptchaHelper = this.GetRecaptchaVerificationHelper(); model.States = _serviceLayer.GetStates().Select(x => new SelectListItem { Text = x.Abbr, Value = x.Id.ToString() }); //model.BusinessTypes = _serviceLayer.GetBusinessTypes().Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }); if (String.IsNullOrEmpty(recaptchaHelper.Response)) { ModelState.AddModelError("", "Captcha answer cannot be empty."); return View(model); } RecaptchaVerificationResult recaptchaResult = recaptchaHelper.VerifyRecaptchaResponse(); if (recaptchaResult != RecaptchaVerificationResult.Success) { ModelState.AddModelError("", "Incorrect captcha answer."); } int cpId; if (ModelState.IsValid) { // Attempt to register the user try { CompanyProfile cp = new CompanyProfile { Address1 = model.Address1, Address2 = model.Address2, BusinessType = model.BusinessType, City = model.City, CompanyName = model.CompanyName, OperatingDistance = model.OperatingDistance, Phone = Util.ConvertPhoneForStorage(model.Phone), PostalCode = model.PostalCode, Published = true, StateId = model.StateId }; GeoLocator locator = new GeoLocator(); string state = _serviceLayer.GetStates().Where(x => x.Id == model.StateId).FirstOrDefault().Abbr; if (model.Address1 == null || model.Address1 == string.Empty) { cp.GeoLocation = locator.GetFromCityStateZip(model.City, state, model.PostalCode); } else { cp.GeoLocation = locator.GetFromAddress(model.Address1, model.City, state, model.PostalCode); } // if we can create the company, create the user if (_serviceLayer.CreateCompany(cp)) { cpId = cp.Id; string confirmationToken = _security.CreateUserAndAccount( model.Email, model.Password, new { FirstName = model.FirstName, LastName = model.LastName, CompanyId = cp.Id }, true); _security.AddUserToRole(model.Email, "Manager"); //var businesstypes = _serviceLayer.GetBusinessTypes(); switch (model.BusinessType) { case BusinessType.GeneralContractor: _security.AddUserToRole(model.Email, "general_contractor"); break; case BusinessType.SubContractor: _security.AddUserToRole(model.Email, "subcontractor"); break; case BusinessType.Architect: _security.AddUserToRole(model.Email, "architect"); break; case BusinessType.Engineer: _security.AddUserToRole(model.Email, "engineer"); break; case BusinessType.Owner: _security.AddUserToRole(model.Email, "owner_client"); break; case BusinessType.MaterialsVendor: _security.AddUserToRole(model.Email, "materials_vendor"); break; case BusinessType.MaterialsMfg: _security.AddUserToRole(model.Email, "materials_manufacturer"); break; case BusinessType.Consultant: _security.AddUserToRole(model.Email, "consultant"); break; }; _emailer.SendConfirmationMail(model.FirstName, model.Email, confirmationToken); return RedirectToAction("RegisterStepTwo", "Account"); } } catch (MembershipCreateUserException e) { ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); } catch (Exception ex) { ModelState.AddModelError("Exception", ex.Message); } } // If we got this far, something failed, redisplay form return View(model); }