public ResultMessage TransitFromMobileInspection(long EquipmentId, long MblEquipmentId, int InspectionId, Interfaces.IUser user) { var rm = new BLL.Core.Domain.ResultMessage { OperationSucceed = false, ActionLog = "Operation failed in TransitFromMobileInspection", LastMessage = "Operation failed!", Id = 0 }; if (user == null) { rm.LastMessage = "Operation failed! User not found!"; rm.ActionLog = "user is null"; return(rm); } var equipment = _context.EQUIPMENTs.Find(EquipmentId); var equipmentInspection = _context.Mbl_Track_Inspection.Where(m => m.inspection_auto == InspectionId && m.equipmentid_auto == MblEquipmentId).FirstOrDefault(); Mbl_NewEquipment mobileEquipment = _context.Mbl_NewEquipment.Where(m => m.equipmentid_auto == MblEquipmentId).FirstOrDefault(); if (equipment == null || equipmentInspection == null || mobileEquipment == null) { rm.LastMessage = "Operation failed! equipment or inspection not found!"; rm.ActionLog = "(equipment == null || equipmentInspection == null || mobileEquipment == null) detected!"; return(rm); } var mobileEqInspection = _context.Mbl_Track_Inspection.Where(m => m.equipmentid_auto == MblEquipmentId).FirstOrDefault(); if (mobileEqInspection == null) { rm.LastMessage = "Operation failed! Inspection from mobile not found!"; rm.ActionLog = "Mbl_Track_Inspection(this inspection).count() is 0"; return(rm); } var mobileInspectionDetails = _context.Mbl_Track_Inspection_Detail.Where(m => m.inspection_auto == mobileEqInspection.inspection_auto).ToList(); var mobileComponents = _context.Mbl_NewGENERAL_EQ_UNIT.Where(m => m.equipmentid_auto == MblEquipmentId).ToList(); var geuComponents = _context.GENERAL_EQ_UNIT.Where(m => m.equipmentid_auto == EquipmentId).ToList(); BLL.Core.Domain.InspectionImpact impact = equipmentInspection.impact == 2 ? BLL.Core.Domain.InspectionImpact.High : BLL.Core.Domain.InspectionImpact.Low; DAL.TRACK_INSPECTION EquipmentInspectionParam = new TRACK_INSPECTION { abrasive = equipmentInspection.abrasive, allowableWear = equipmentInspection.allowableWear, inspection_comments = equipmentInspection.inspection_comments, impact = equipmentInspection.impact, inspection_date = equipmentInspection.inspection_date, Jobsite_Comms = equipmentInspection.Jobsite_Comms, quote_auto = equipmentInspection.quote_auto, last_interp_date = equipmentInspection.last_interp_date, last_interp_user = equipmentInspection.last_interp_user, location = equipmentInspection.location, ltd = equipmentInspection.ltd, confirmed_date = equipmentInspection.confirmed_date, confirmed_user = equipmentInspection.confirmed_user, created_date = equipmentInspection.created_date, created_user = equipmentInspection.created_user, docket_no = equipmentInspection.docket_no + DateTime.Now.Millisecond, dry_joints_left = equipmentInspection.dry_joints_left, dry_joints_right = equipmentInspection.dry_joints_right, evalcode = equipmentInspection.evalcode, eval_comment = equipmentInspection.eval_comment, equipmentid_auto = EquipmentId, examiner = equipmentInspection.examiner, ext_cannon_left = equipmentInspection.ext_cannon_left, ext_cannon_right = equipmentInspection.ext_cannon_right, frame_ext_left = equipmentInspection.frame_ext_left, frame_ext_right = equipmentInspection.frame_ext_right, moisture = equipmentInspection.moisture, notes = equipmentInspection.notes, packing = equipmentInspection.packing, released_by = equipmentInspection.released_by, released_date = equipmentInspection.released_date, smu = equipmentInspection.smu, sprocket_left_status = equipmentInspection.sprocket_left_status, sprocket_right_status = equipmentInspection.sprocket_right_status, track_sag_left = equipmentInspection.track_sag_left, track_sag_left_status = equipmentInspection.track_sag_left_status, track_sag_right = equipmentInspection.track_sag_right, track_sag_right_status = equipmentInspection.track_sag_right_status, ucbrand = equipmentInspection.ucbrand, uccode = equipmentInspection.uccode, uccodedesc = equipmentInspection.uccodedesc, wear = equipmentInspection.wear, LeftTrackSagComment = equipmentInspection.LeftTrackSagComment, RightTrackSagComment = equipmentInspection.RightTrackSagComment, LeftCannonExtensionComment = equipmentInspection.LeftCannonExtensionComment, RightCannonExtensionComment = equipmentInspection.RightCannonExtensionComment, LeftTrackSagImage = equipmentInspection.LeftTrackSagImage, RightTrackSagImage = equipmentInspection.RightTrackSagImage, LeftCannonExtensionImage = equipmentInspection.LeftCannonExtensionImage, RightCannonExtensionImage = equipmentInspection.RightCannonExtensionImage, TravelledKms = equipmentInspection.TravelledKms, ForwardTravelHours = equipmentInspection.ForwardTravelHours, ReverseTravelHours = equipmentInspection.ReverseTravelHours, LeftScallopMeasurement = equipmentInspection.LeftScallopMeasurement, RightScallopMeasurement = equipmentInspection.RightScallopMeasurement }; var matchedComponents = getMatchingForInspectionSync(EquipmentId.LongNullableToInt(), MblEquipmentId.LongNullableToInt()); List <BLL.Core.Domain.InspectionDetailWithSide> tidWithSIdeList = new List <BLL.Core.Domain.InspectionDetailWithSide>(); foreach (var mtid in mobileInspectionDetails) { var matched = matchedComponents.Where(m => m.ComponentIndex == mtid.track_unit_auto).FirstOrDefault(); if (matched == null || matched.MatchedComponentId == 0) { continue; } BLL.Core.Domain.Component LogicalComponent = new Component(_context, matched.MatchedComponentId); if (LogicalComponent != null && LogicalComponent.Id != 0) { decimal worn = LogicalComponent.CalcWornPercentage(ConvertFrom(BLL.Core.Domain.MeasurementType.Milimeter, mtid.reading), mtid.tool_auto ?? 0, impact); char eval = ' '; LogicalComponent.GetEvalCodeByWorn(worn, out eval); List <TRACK_INSPECTION_IMAGES> imageList = new List <TRACK_INSPECTION_IMAGES>(); List <COMPART_ATTACH_FILESTREAM> imageStreamList = new List <COMPART_ATTACH_FILESTREAM>(); var mobileFileStream = _context.Mbl_CompartAttach_filestream.Where(m => m.inspection_auto == mobileEqInspection.inspection_auto && m.compartid_auto == matched.ComponentIndex).ToList(); foreach (var streamImage in mobileFileStream) { TRACK_INSPECTION_IMAGES inspectionImage = new TRACK_INSPECTION_IMAGES { GUID = streamImage.guid, image_comment = streamImage.comment, image_data = streamImage.attachment }; imageList.Add(inspectionImage); COMPART_ATTACH_FILESTREAM inspectionStreamImage = new COMPART_ATTACH_FILESTREAM { attachment = streamImage.attachment, attachment_name = streamImage.attachment_name, comment = streamImage.comment, compartid_auto = LogicalComponent.DALComponent.compartid_auto, comparttype_auto = LogicalComponent.DALComponent.LU_COMPART.comparttype_auto, compart_attach_type_auto = streamImage.compart_attach_type_auto, entry_date = streamImage.entry_date, guid = streamImage.guid, inspection_auto = InspectionId, position = LogicalComponent.DALComponent.pos, tool_auto = mtid.tool_auto, user_auto = user.Id }; imageStreamList.Add(inspectionStreamImage); } TRACK_INSPECTION_DETAIL tid = new TRACK_INSPECTION_DETAIL { comments = mtid.comments, worn_percentage = worn, eval_code = eval.ToString(), ext_projected_hours = mtid.ext_projected_hours, ext_remaining_hours = mtid.ext_remaining_hours, hours_on_surface = mtid.hours_on_surface, projected_hours = mtid.projected_hours, reading = mtid.reading, remaining_hours = mtid.remaining_hours, tool_auto = mtid.tool_auto, track_unit_auto = LogicalComponent.Id, Images = imageList }; BLL.Core.Domain.InspectionDetailWithSide tidWithSide = new BLL.Core.Domain.InspectionDetailWithSide { CompartAttachFileStreamImage = imageStreamList, ComponentInspectionDetail = tid, side = (LogicalComponent.DALComponent.side == null || LogicalComponent.DALComponent.side > 2 || LogicalComponent.DALComponent.side < 0) ? 0 : (int)LogicalComponent.DALComponent.side }; tidWithSIdeList.Add(tidWithSide); } } BLL.Core.Domain.InsertInspectionParams Params = new BLL.Core.Domain.InsertInspectionParams { EquipmentInspection = EquipmentInspectionParam, ComponentsInspection = tidWithSIdeList, EvaluationOverall = ' ' }; BLL.Interfaces.IEquipmentActionRecord EquipmentAction = new BLL.Core.Domain.EquipmentActionRecord { ActionDate = Params.EquipmentInspection.inspection_date, ActionUser = user, EquipmentId = Params.EquipmentInspection.equipmentid_auto > int.MaxValue ? int.MaxValue : (int)Params.EquipmentInspection.equipmentid_auto, Comment = Params.EquipmentInspection.inspection_comments, ReadSmuNumber = Params.EquipmentInspection.smu == null ? 0 : (int)Params.EquipmentInspection.smu, TypeOfAction = BLL.Core.Domain.ActionType.InsertInspection, Cost = 0 }; using (BLL.Core.Domain.Action UCAction = new BLL.Core.Domain.Action(new DAL.UndercarriageContext(), EquipmentAction, Params)) { System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); UCAction.Operation.Start(); if (UCAction.Operation.Status == BLL.Core.Domain.ActionStatus.Close) { rm.OperationSucceed = false; rm.ActionLog = UCAction.Operation.ActionLog; rm.LastMessage = UCAction.Operation.Message; } if (UCAction.Operation.Status == BLL.Core.Domain.ActionStatus.Started) { UCAction.Operation.Validate(); } if (UCAction.Operation.Status == BLL.Core.Domain.ActionStatus.Invalid) { rm.OperationSucceed = false; rm.ActionLog = UCAction.Operation.ActionLog; rm.LastMessage = UCAction.Operation.Message; } if (UCAction.Operation.Status == BLL.Core.Domain.ActionStatus.Valid) { UCAction.Operation.Commit(); } if (UCAction.Operation.Status == BLL.Core.Domain.ActionStatus.Failed) { rm.OperationSucceed = false; rm.ActionLog = UCAction.Operation.ActionLog; rm.LastMessage = UCAction.Operation.Message; } if (UCAction.Operation.Status == BLL.Core.Domain.ActionStatus.Succeed) { rm.OperationSucceed = true; rm.ActionLog = UCAction.Operation.ActionLog; rm.LastMessage = UCAction.Operation.Message; } rm.Id = UCAction.Operation.UniqueId; if (rm.OperationSucceed) { // TT-49 if (mobileEquipment.EquipmentPhoto != null) { _context.EQUIPMENTs.Find(equipment.equipmentid_auto).EquipmentPhoto = mobileEquipment.EquipmentPhoto; } _context.Mbl_Track_Inspection_Detail.RemoveRange(mobileInspectionDetails); _context.Mbl_Track_Inspection.Remove(mobileEqInspection); _context.Mbl_NewGENERAL_EQ_UNIT.RemoveRange(mobileComponents); _context.Mbl_NewEquipment.Remove(mobileEquipment); var imagesTobeDelete = _context.Mbl_CompartAttach_filestream.Where(m => m.inspection_auto == mobileEqInspection.inspection_auto); _context.Mbl_CompartAttach_filestream.RemoveRange(imagesTobeDelete); try { _context.SaveChanges(); rm.OperationSucceed = true; rm.LastMessage = "Operation was successfull!"; } catch (Exception m) { string Message = m.Message; rm.OperationSucceed = false; rm.LastMessage = "Operation failed! please check log for more details!"; rm.ActionLog = Message + ((m.InnerException != null) ? m.InnerException.Message : ""); } } } try { BLL.Core.Domain.Equipment LogicalEquipment = new BLL.Core.Domain.Equipment(new UndercarriageContext(), (int)EquipmentId); if (LogicalEquipment.Id == 0 || LogicalEquipment.GetEquipmentFamily() != BLL.Core.Domain.EquipmentFamily.MEX_Mining_Shovel) { return(rm); } LogicalEquipment.UpdateMiningShovelInspectionParentsFromChildren(rm.Id); return(rm); } catch (Exception ex) { string message = ex.Message; return(rm); } }// End of transit from mobile
public async Task <Tuple <long, string> > UpdateEquipment(SetupEquipmentViewModel e) { var ActionParam = new BLL.Core.Domain.EquipmentActionRecord { ActionUser = new BLL.Core.Domain.User { Id = (int)(e.CreatedByUserId ?? 0) }, EquipmentId = (int)e.Id, ReadSmuNumber = e.Smu, EquipmentActualLife = e.Ltd, TypeOfAction = BLL.Core.Domain.ActionType.UpdateSetupEquipment, Cost = 0.0M, Comment = "Update Equipment Setup", ActionDate = e.Date.ToLocalTime().Date }; var EquipmentSetupParams = new BLL.Core.Domain.GETEquipmentSetupParams { UserAuto = (int)(e.CreatedByUserId ?? 0), ActionType = BLL.Core.Domain.GETActionType.UpdateSetupEquipment, RecordedDate = DateTime.Now, EventDate = e.Date.ToLocalTime().Date, Comment = "Update Equipment Setup", Cost = 0.0M, MeterReading = e.Smu, EquipmentLTD = e.Ltd, EquipmentId = e.Id, IsUpdating = true, }; var rm = new BLL.Core.Domain.ResultMessage { OperationSucceed = false, ActionLog = " ", LastMessage = " ", Id = 0 }; using (var action = new BLL.Core.Domain.Action(new DAL.UndercarriageContext(), new DAL.GETContext(), ActionParam, EquipmentSetupParams)) { if (action.Operation.Start() == ActionStatus.Started && action.Operation.Validate() == ActionStatus.Valid && action.Operation.Commit() == ActionStatus.Succeed) { rm.OperationSucceed = true; } else { rm.OperationSucceed = false; } rm.LastMessage = action.Operation.Message; rm.ActionLog = action.Operation.ActionLog; rm.Id = action.Operation.UniqueId; } if (!rm.OperationSucceed && rm.Id != -2) { return(Tuple.Create((long)-1, "Failed to complete the action: " + rm.LastMessage)); } var mmta = await _context.LU_MMTA.Where(m => m.model_auto == e.ModelId && m.make_auto == e.MakeId).FirstOrDefaultAsync(); var updater = await _context.USER_TABLE.FindAsync(e.CreatedByUserId); string[] LogoArr = e.Photo.Split(','); string equipmentPhoto = ""; if (LogoArr.Length > 1) { equipmentPhoto = LogoArr[1]; } var eq = await _context.EQUIPMENTs.FindAsync(e.Id); // Need to check if inspections exist eq.smu_at_start = e.Smu; eq.currentsmu = e.Smu; eq.last_reading_date = e.Date.ToLocalTime().Date; eq.LTD_at_start = e.Ltd; eq.purchase_op_hrs = e.Smu; eq.purchase_date = e.Date.ToLocalTime().Date; eq.modified_date = DateTime.Now; eq.modified_user = updater.username; eq.equip_status = e.StatusId; eq.crsf_auto = e.JobsiteId; eq.serialno = e.SerialNumber; eq.unitno = e.UnitNumber; eq.mmtaid_auto = mmta.mmtaid_auto; eq.op_hrs_per_day = e.HoursOfUsePerDay; eq.ranking_auto = Convert.ToByte((e.RankingId == null || e.RankingId < 0) ? 0 : e.RankingId); eq.UsedMonday = e.UsedMonday; eq.UsedTuesday = e.UsedTuesday; eq.UsedWednesday = e.UsedWednesday; eq.UsedThursday = e.UsedThursday; eq.UsedFriday = e.UsedFriday; eq.UsedSaturday = e.UsedSaturday; eq.UsedSunday = e.UsedSunday; if (e.Photo.Length > 0) { eq.EquipmentPhoto = Convert.FromBase64String(equipmentPhoto); } eq.InspectEvery = e.InspectEvery; eq.InspectEveryUnitTypeId = e.InspectEveryUnitTypeId; var mmtaEntity = await _context.LU_MMTA.FindAsync(eq.mmtaid_auto); mmtaEntity.make_auto = e.MakeId; mmtaEntity.model_auto = e.ModelId; mmtaEntity.type_auto = mmta.type_auto; mmtaEntity.app_auto = e.ApplicationId; try { await _context.SaveChangesAsync(); } catch (Exception ex) { return(Tuple.Create((long)-1, "Failed to update the equipment. " + ex.Message + ". " + ex.InnerException != null ? ex.InnerException.Message : "")); } //var getSetupEvent = new GETCore.Classes.GETEquipment(); //getSetupEvent.equipmentSetupEvent(eq.equipmentid_auto, e.Smu, e.Ltd, e.CreatedByUserId != null ? (long)e.CreatedByUserId : -1); if (e.UnsyncedId > 0) { new BLL.Core.Domain.Inspection(new DAL.UndercarriageContext()).MatchMobileInspection((int)e.Id, e.UnsyncedId); } if (!rm.OperationSucceed) { return(Tuple.Create(eq.equipmentid_auto, "Your equipment has been updated with warnings. This equipment was setup in the old application and some manual midifications may be required!")); } return(Tuple.Create(eq.equipmentid_auto, "Your equipment has been updated successfully. ")); }