public async Task <IActionResult> Edit(string id, [Bind("PoleId,PoleUid,FeederLineUid,SurveyDate,RouteCode,FeederLineId,SurveyorName,PoleNo,PreviousPoleNo,Latitude,Longitude,PoleTypeId,PoleConditionId,LineTypeId,BackSpan,TypeOfWireId,NoOfWireHt,NoOfWireLt,WireLength,WireConditionId,MSJNo,SleeveNo,TwistNo,PhaseAId,PhaseBId,PhaseCId,Neutral,StreetLight,SourceCableId,TargetCableId,TransformerExist,CommonPole,Tap")] TblPole tblPole, string surveyDate) { var feederLineId = id.Substring(0, 11); if (id != tblPole.PoleId) { return(NotFound()); } double latA = Convert.ToDouble(tblPole.Latitude); double longA = Convert.ToDouble(tblPole.Longitude); double latB = Convert.ToDouble(_context.TblPole.Where(i => i.PoleId == tblPole.PreviousPoleNo).Select(i => i.Latitude).SingleOrDefault()); double longB = Convert.ToDouble(_context.TblPole.Where(i => i.PoleId == tblPole.PreviousPoleNo).Select(i => i.Longitude).SingleOrDefault()); var poleDistance = GetPoleDistance(latA, longA, latB, longB); if (poleDistance > 500) { TempData["statuMessageError"] = "Pole Distance is " + poleDistance.ToString("#.##") + "! Pole distance can not more then 500 miter"; //return RedirectToAction("Create"); } else { tblPole.WireLength = poleDistance; tblPole.BackSpan = poleDistance.ToString("#.##"); if (ModelState.IsValid) { try { string UpdatePoleId = _context.TblPole.Where(i => i.PreviousPoleNo == tblPole.PreviousPoleNo).Select(i => i.PoleId).FirstOrDefault(); _context.Update(tblPole); await _context.SaveChangesAsync(); if (Convert.ToInt64(tblPole.PreviousPoleNo) != (Convert.ToInt64(tblPole.PoleId) - 1)) { var findPoleInfo = await _context.TblPole.FindAsync(UpdatePoleId); findPoleInfo.PreviousPoleNo = tblPole.PoleId; _context.Update(findPoleInfo); await _context.SaveChangesAsync(); } } catch (DbUpdateConcurrencyException) { if (!TblPoleExists(tblPole.PoleId)) { return(NotFound()); } else { throw; } } TempData["statuMessageSuccess"] = "Pole has been updated successfully"; return(RedirectToAction(nameof(Index))); } } ViewData["LineTypeId"] = new SelectList(_context.LookUpLineType, "Code", "Name"); ViewData["TypeOfWireId"] = new SelectList(_context.LookUpTypeOfWire, "Code", "Name"); ViewData["PhaseAId"] = new SelectList(_context.LookUpSagCondition, "SagConditionId", "Name"); ViewData["PhaseBId"] = new SelectList(_context.LookUpSagCondition, "SagConditionId", "Name"); ViewData["PhaseCId"] = new SelectList(_context.LookUpSagCondition, "SagConditionId", "Name"); ViewData["PoleConditionId"] = new SelectList(_context.LookUpPoleCondition, "PoleConditionId", "Name"); ViewData["FeederLineId"] = new SelectList(_context.TblFeederLine.Where(i => i.FeederLineId == feederLineId), "FeederLineId", "FeederName"); ViewData["RouteCode"] = new SelectList(_context.LookUpRouteInfo.Where(i => i.RouteCode == feederLineId.Substring(0, 9)), "RouteCode", "RouteName"); ViewData["SourceCableId"] = new SelectList(_context.TblFeederLine, "FeederLineId", "FeederName"); ViewData["TargetCableId"] = new SelectList(_context.TblFeederLine, "FeederLineId", "FeederName"); ViewData["PoleTypeId"] = new SelectList(_context.LookUpPoleType, "PoleTypeId", "Name"); ViewData["WireConditionId"] = new SelectList(_context.LookUpCondition, "Code", "Name"); ViewData["PreviousPoleNo"] = new SelectList(_context.TblPole.Where(i => i.PoleId.Substring(0, 11).Contains(feederLineId)), "PoleId", "PoleId"); return(View(tblPole)); }
public async Task <IActionResult> Create([Bind("PoleId,PoleUid,FeederLineUid,SurveyDate,RouteCode,FeederLineId,SurveyorName,PoleNo,PreviousPoleNo,Latitude,Longitude,PoleTypeId,PoleConditionId,LineTypeId,BackSpan,TypeOfWireId,NoOfWireHt,NoOfWireLt,WireLength,WireConditionId,MSJNo,SleeveNo,TwistNo,PhaseAId,PhaseBId,PhaseCId,Neutral,StreetLight,SourceCableId,TargetCableId,TransformerExist,CommonPole,Tap")] TblPole tblPole, string surveyDate) { double latA = Convert.ToDouble(tblPole.Latitude); double longA = Convert.ToDouble(tblPole.Longitude); double latB = Convert.ToDouble(_context.TblPole.Where(i => i.PoleId == tblPole.PreviousPoleNo).Select(i => i.Latitude).SingleOrDefault()); double longB = Convert.ToDouble(_context.TblPole.Where(i => i.PoleId == tblPole.PreviousPoleNo).Select(i => i.Longitude).SingleOrDefault()); var poleDistance = GetPoleDistance(latA, longA, latB, longB); if (poleDistance > 500) { TempData["statuMessageError"] = "Pole Distance is " + poleDistance.ToString("#.##") + "! Pole distance can not more then 500 miter"; //return RedirectToAction("Create"); } else { tblPole.WireLength = poleDistance; tblPole.BackSpan = poleDistance.ToString("#.##"); if (ModelState.IsValid) { try { string UpdatePoleId = _context.TblPole.Where(i => i.PreviousPoleNo == tblPole.PreviousPoleNo).Select(i => i.PoleId).FirstOrDefault(); _context.Add(tblPole); await _context.SaveChangesAsync(); //Update Pole After Inserting New pole Between Existing Pole if (Convert.ToInt64(tblPole.PreviousPoleNo) != (Convert.ToInt64(tblPole.PoleId) - 1)) { var findPoleInfo = await _context.TblPole.FindAsync(UpdatePoleId); findPoleInfo.PreviousPoleNo = tblPole.PoleId; _context.Update(findPoleInfo); await _context.SaveChangesAsync(); } TempData["statuMessageSuccess"] = "Pole has been added successfully"; return(RedirectToAction(nameof(Index))); } catch (Exception ex) { TempData["statuMessageError"] = ex.Message; } } } ViewData["LineTypeId"] = new SelectList(_context.LookUpLineType, "Code", "Name"); ViewData["TypeOfWireId"] = new SelectList(_context.LookUpTypeOfWire, "Code", "Name"); ViewData["PhaseAId"] = new SelectList(_context.LookUpSagCondition, "SagConditionId", "Name"); ViewData["PhaseBId"] = new SelectList(_context.LookUpSagCondition, "SagConditionId", "Name"); ViewData["PhaseCId"] = new SelectList(_context.LookUpSagCondition, "SagConditionId", "Name"); ViewData["PoleConditionId"] = new SelectList(_context.LookUpPoleCondition, "PoleConditionId", "Name"); ViewData["FeederLineId"] = new SelectList(_context.TblFeederLine, "FeederLineId", "FeederName"); ViewData["RouteCode"] = new SelectList(_context.LookUpRouteInfo, "RouteCode", "RouteName"); ViewData["SourceCableId"] = new SelectList(_context.TblFeederLine, "FeederLineId", "FeederName"); ViewData["TargetCableId"] = new SelectList(_context.TblFeederLine, "FeederLineId", "FeederName"); ViewData["PoleTypeId"] = new SelectList(_context.LookUpPoleType, "PoleTypeId", "Name"); ViewData["WireConditionId"] = new SelectList(_context.LookUpCondition, "Code", "Name"); var poleIdList = _context.TblPole.AsNoTracking().Select(pi => new SelectListItem() { Text = pi.PoleId, Value = pi.PoleId }).ToList(); ViewData["PreviousPoleId"] = poleIdList; //ViewData["PreviousPoleId"] = new SelectList(_context.TblPole, "PoleId", "PoleId"); ViewData["ZoneCode"] = new SelectList(_context.LookUpZoneInfo.OrderBy(d => d.ZoneCode), "ZoneCode", "ZoneName"); return(View(tblPole)); }