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 BLL.Core.Domain.ResultMessageExtended SaveUcInspection(UndercarriageInspectionEntity inspection) { var rm = new BLL.Core.Domain.ResultMessageExtended { OperationSucceed = false, ActionLog = " ", LastMessage = " ", Id = 0, }; BLL.Interfaces.IUser user = GetUserIdByExaminer(inspection.Examiner); if (user == null) { rm.LastMessage = "User Not Found!"; return(rm); } inspection.Examiner = user.userName; BLL.Core.Domain.InsertInspectionParams Params = getInsertInspectionParams(inspection); if (Params.EquipmentInspection.docket_no == null || Params.EquipmentInspection.docket_no.Length < 2) { Params.EquipmentInspection.docket_no = GetUniqueDocketNo(); } 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)) { rm.PreValidation = UCAction.PreValidate(EquipmentAction); if (!rm.PreValidation.IsValid) { rm.LastMessage = "Validation Failed!"; rm.ActionLog = "PreValidation Failed"; rm.OperationSucceed = false; return(rm); } 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; // TT-49 if (inspection.EquipmentImage != null) { UpdateEquipmentImageFromInspection(inspection.EquipmentIdAuto, inspection.EquipmentImage); } } rm.Id = UCAction.Operation.UniqueId; } try { BLL.Core.Domain.Equipment LogicalEquipment = new BLL.Core.Domain.Equipment(new DAL.UndercarriageContext(), EquipmentAction.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); } }