public Models.ApiResult Create(Bridge bridge) { var result = _adapter.saveBridge(bridge); return result; }
public Models.ApiResult Update(Bridge bridge) { var result = _adapter.updateBridge(bridge); return result; }
// if at least 2/3 are marked as edit don't allow remove (only edit) private bool allowDelete(Bridge bridge) { if (bridge.User1Reason == true && bridge.User2Reason == true && bridge.User3Reason == true || bridge.User1Reason == true && bridge.User2Reason == true && bridge.User3Reason == false || bridge.User1Reason == true && bridge.User2Reason == false && bridge.User3Reason == true || bridge.User1Reason == false && bridge.User2Reason == true && bridge.User3Reason == true) { return false; } return true; }
private Bridge getBridgeById(int id) { var bridge = new Bridge(); var db = new BwareContext(); bridge = db.Bridges.Where(b => b.BridgeId == id && b.isActive == true).FirstOrDefault(); return bridge; }
/**** Only for seeding data public Models.ApiResult saveBridgeBatch(Bridge bridge) { var db = new BwareContext(); var result = new Models.ApiResult(); result.isSuccess = false; result.data = null; result.multipleData = null; if (bridge == null) { result.isSuccess = false; result.message = "Bridge data is null"; return result; } if (bridge.UserCreated == null) { result.isSuccess = false; result.message = "User created can not be null"; return result; } // could just make it now if (bridge.DateCreated == null) { result.isSuccess = false; result.message = "Date Created must be included"; return result; } // could just make it now if (bridge.DateModified == null) { result.isSuccess = false; result.message = "Date Modified must be included"; return result; } // check lat/lon in range if (bridge.Latitude > 90 || bridge.Latitude < -90 || bridge.Longitude > 180 || bridge.Longitude < -180) { result.isSuccess = false; result.message = "Latitude must be between -90 and 90; Longitude must be between -180 and 180"; return result; } if (bridge.Latitude.GetType() != typeof(Double) || bridge.Longitude.GetType() != typeof(Double)) { result.isSuccess = false; result.message = "Latitude and Longitude must be included and of correct data type"; return result; } bridge.NumberOfVotes = 0; // new bridge bridge.isLocked = false; try { // set DbGeography var sourcePoint = string.Format("POINT({0} {1})", bridge.Longitude.ToString().Replace(',', '.'), bridge.Latitude.ToString().Replace(',', '.')); var bridgeLocation = DbGeography.PointFromText(sourcePoint, 4326); bridge.BridgeLocation = bridgeLocation; // Store date created/modified as UTC bridge.DateCreated = bridge.DateCreated.ToUniversalTime(); bridge.DateModified = bridge.DateModified.ToUniversalTime(); // Mark new bridge as isActive bridge.isActive = true; db.Bridges.Add(bridge); var numReturned = db.SaveChanges(); if (numReturned == 1) { result.isSuccess = true; result.message = "Bridge saved successfully"; return result; } else { result.isSuccess = false; result.message = "Error saving bridge record to database"; return result; } } catch { result.isSuccess = false; result.message = "Error saving bridge record to database"; return result; } } ******/ public Models.ApiResult updateBridge(Bridge bridge) { var db = new BwareContext(); var result = new Models.ApiResult(); result.isSuccess = false; result.data = null; result.multipleData = null; if (bridge == null) { result.isSuccess = false; result.message = "Bridge data is null"; return result; } if (bridge.DateModified == null) { result.isSuccess = false; result.message = "Date Modified must be included"; return result; } if (bridge.UserModified == null) { result.isSuccess = false; result.message = "User Modified must be included"; return result; } // check lat/lon in range if (bridge.Latitude > 90 || bridge.Latitude < -90 || bridge.Longitude > 180 || bridge.Longitude < -180) { result.isSuccess = false; result.message = "Latitude must be between -90 and 90; Longitude must be between -180 and 180"; return result; } if (bridge.Latitude.GetType() != typeof(Double) || bridge.Longitude.GetType() != typeof(Double)) { result.isSuccess = false; result.message = "Latitude and Longitude must be included and of correct data type"; return result; } try { var theBridge = db.Bridges.Where(b => b.Latitude <= bridge.Latitude + 0.0001 && b.Latitude >= bridge.Latitude - 0.0001 && b.Longitude <= bridge.Longitude + 0.0001 && b.Longitude >= bridge.Longitude - 0.0001 && b.isActive == true).FirstOrDefault(); if (theBridge == null) { result.isSuccess = false; result.message = "Bridge not found"; return result; } // Check to see if all 3 down vote slots filled before allowing edit if (theBridge.User1Reason == null || theBridge.User2Reason == null || theBridge.User3Reason == null) { result.message = "Bridge must have at least 3 down votes to be edited"; return result; } // Edit only one per week??????? db.Bridges.Attach(theBridge); // track who made last change and when theBridge.DateModified = bridge.DateModified.ToUniversalTime(); theBridge.UserModified = bridge.UserModified; theBridge.NumberOfVotes = 0; // reset user input fields theBridge.isLocked = false; theBridge.User1Reason = null; theBridge.User1Verified = null; theBridge.User2Reason = null; theBridge.User2Verified = null; theBridge.User3Reason = null; theBridge.User3Verified = null; theBridge.Country = bridge.Country; // the location - restriction fields theBridge.County = bridge.County; theBridge.FeatureCarried = bridge.FeatureCarried; theBridge.FeatureCrossed = bridge.FeatureCrossed; theBridge.Height = bridge.Height; theBridge.isRposted = bridge.isRposted; theBridge.LocationDescription = bridge.LocationDescription; theBridge.OtherPosting = bridge.OtherPosting; theBridge.State = bridge.State; theBridge.Township = bridge.Township; theBridge.WeightCombination = bridge.WeightCombination; theBridge.WeightDouble = bridge.WeightDouble; theBridge.WeightStraight_TriAxle = bridge.WeightStraight_TriAxle; theBridge.WeightStraight = bridge.WeightStraight; theBridge.Zip = bridge.Zip; var updateCount = db.SaveChanges(); if (updateCount == 1) { result.isSuccess = true; result.message = "Bridge updated successfully"; return result; } else { result.isSuccess = false; result.message = "Error saving bridge record to database"; return result; } } catch { result.isSuccess = false; result.message = "Error saving bridge record to database"; return result; } }
public Models.ApiResult saveBridge(Bridge bridge) { var db = new BwareContext(); var result = new Models.ApiResult(); result.isSuccess = false; result.data = null; result.multipleData = null; if (bridge == null) { result.isSuccess = false; result.message = "Bridge data is null"; return result; } if (bridge.UserCreated == null) { result.isSuccess = false; result.message = "User created can not be null"; return result; } // could just make it now if (bridge.DateCreated == null) { result.isSuccess = false; result.message = "Date Created must be included"; return result; } // could just make it now if (bridge.DateModified == null) { result.isSuccess = false; result.message = "Date Modified must be included"; return result; } // check lat/lon in range if (bridge.Latitude > 90 || bridge.Latitude < -90 || bridge.Longitude > 180 || bridge.Longitude < -180) { result.isSuccess = false; result.message = "Latitude must be between -90 and 90; Longitude must be between -180 and 180"; return result; } if (bridge.Latitude.GetType() != typeof(Double) || bridge.Longitude.GetType() != typeof(Double)) { result.isSuccess = false; result.message = "Latitude and Longitude must be included and of correct data type"; return result; } try { var theBridges = new List<Bridge>(); theBridges = null; var isAlreadyCreated = false; var oneWeekAgo = DateTime.UtcNow.AddDays(-numDaysBetweenCreate); isAlreadyCreated = db.Bridges.Where(b => b.UserCreated == bridge.UserCreated && b.DateCreated > oneWeekAgo).ToList().Any(); if (isAlreadyCreated) { result.isSuccess = false; result.message = "User must wait specified time between creating bridges"; return result; } } catch { result.isSuccess = false; result.message = "Error determining when user last created bridge. Please try again"; return result; } bridge.NumberOfVotes = 0; // new bridge bridge.isLocked = false; try { // set DbGeography var sourcePoint = string.Format("POINT({0} {1})", bridge.Longitude.ToString().Replace(',', '.'), bridge.Latitude.ToString().Replace(',', '.')); var bridgeLocation = DbGeography.PointFromText(sourcePoint, 4326); bridge.BridgeLocation = bridgeLocation; // Store date created/modified as UTC bridge.DateCreated = bridge.DateCreated.ToUniversalTime(); bridge.DateModified = bridge.DateModified.ToUniversalTime(); // Mark new bridge as isActive bridge.isActive = true; db.Bridges.Add(bridge); var numReturned = db.SaveChanges(); if (numReturned == 1) { result.isSuccess = true; result.message = "Bridge saved successfully"; return result; } else { result.isSuccess = false; result.message = "Error saving bridge record to database"; return result; } } catch { result.isSuccess = false; result.message = "Error saving bridge record to database"; return result; } }
public Models.ApiResult removeBridgeByLocation(double lat, double lon) { var bridge = new Bridge(); var db = new BwareContext(); var result = new Models.ApiResult(); result.isSuccess = false; result.data = null; result.multipleData = null; try { bridge = getBridgeByLocation(lat, lon); db.Bridges.Attach(bridge); if (bridge == null) { // couldn't find bridge result.message = "Bridge not found"; return result; } else { // Check to see if bridge can be deleted (marked isActive assigned to false) first!!!!!! if (bridge.User1Reason == null || bridge.User2Reason == null || bridge.User3Reason == null) { result.message = "Bridge must have at least 3 down votes to be removed"; return result; } // false == 0 == mark for delete -- true == 1 == mark for edit // if at least 2/3 are marked as edit don't allow remove (only edit) if (allowDelete(bridge) == false) { result.message = "Bridge must have at least 2 down votes of correct type to be removed"; return result; } // Delete only one per week??????? // Mark isActive as false for soft delete bridge.isActive = false; var saveOk = 1 == db.SaveChanges(); if (saveOk == true) { result.isSuccess = true; result.message = "Bridge marked as inactive"; return result; } result.message = "Error removing bridge"; return result; } } catch { result.message = "Error removing bridge"; return result; } }
const int numDaysBetweenCreate = 7; // allow create once a week #endregion Fields #region Methods public Models.ApiResult decreaseVote(int bridgeId, string userName, bool isEdit) { var theBridge = new Bridge(); var db = new BwareContext(); var result = new Models.ApiResult(); result.data = null; if (userName == "" || userName == null) { result.isSuccess = false; result.message = "Username is null or empty string"; return result; } theBridge = db.Bridges.Where(b => b.BridgeId == bridgeId && b.isActive == true).FirstOrDefault(); if (theBridge == null) { result.isSuccess = false; result.message = "Bridge not found"; return result; } // User can only down vote once if ((theBridge.User1Verified != null && theBridge.User1Verified == userName) || (theBridge.User2Verified != null && theBridge.User2Verified == userName) || (theBridge.User3Verified != null && theBridge.User3Verified == userName)) { result.isSuccess = false; result.message = "Error: User can only down vote a bridge once"; return result; } // Can only down vote max of 3 times if (theBridge.NumberOfVotes >= 3) { theBridge.NumberOfVotes = 3; result.isSuccess = false; result.message = "Error: Down vote slots full"; return result; } // if down vote slot free grab it if (theBridge.User1Verified == null || theBridge.User1Verified == "") { theBridge.User1Verified = userName; theBridge.User1Reason = isEdit; } else if (theBridge.User2Verified == null || theBridge.User2Verified == "") { theBridge.User2Verified = userName; theBridge.User2Reason = isEdit; } else if (theBridge.User3Verified == null || theBridge.User3Verified == "") { theBridge.User3Verified = userName; theBridge.User3Reason = isEdit; } theBridge.NumberOfVotes = theBridge.NumberOfVotes + 1; try { if (db.SaveChanges() == 1) { result.isSuccess = true; result.message = "Down Vote Succcessfully Recorded"; } else { result.isSuccess = false; result.message = "Error Saving Down Vote"; } return result; } catch { result.isSuccess = false; result.message = "Error Saving Down Vote"; return result; } }
public Bridge getBridgeByLocation(double lat, double lon) { var bridge = new Bridge(); var db = new BwareContext(); bridge = db.Bridges.Where(b => b.Latitude <= lat + 0.0001 && b.Latitude >= lat - 0.0001 && b.Longitude <= lon + 0.0001 && b.Longitude >= lon - 0.0001 && b.isActive == true).FirstOrDefault(); return bridge; }