Пример #1
0
        public List <TestPointImageEntity> GetTestPointImages(string equipmentList)
        {
            List <TestPointImageEntity> resultList = new List <TestPointImageEntity>();
            var equipmentArray = equipmentList.Split(',');
            List <DAL.COMPART_TOOL_IMAGE> resultListRaw = new List <DAL.COMPART_TOOL_IMAGE>();

            foreach (var s in equipmentArray)
            {
                int equipmentId = 0;
                Int32.TryParse(s, out equipmentId);
                if (equipmentId == 0)
                {
                    continue;
                }
                BLL.Core.Domain.Equipment LogicalEquipment = new BLL.Core.Domain.Equipment(new DAL.UndercarriageContext(), equipmentId);
                var k = LogicalEquipment.GetEquipmentCompartToolImageList();
                resultListRaw.AddRange(k);
            }
            resultListRaw = resultListRaw.GroupBy(m => m.Id).Select(m => m.First()).ToList();
            foreach (var img in resultListRaw)
            {
                TestPointImageEntity ent = new TestPointImageEntity();
                ent.CompartType    = img.CompartId;
                ent.TestPointImage = img.ImageData;
                ent.Tool           = img.Tool.tool_code;
                resultList.Add(ent);
            }
            return(resultList);
        }
Пример #2
0
        public List <LimitsEntity> GetEquipmentLimits(string equipmentList)
        {
            List <LimitsEntity> resultList = new List <LimitsEntity>();
            var equipmentArray             = equipmentList.Split(',');

            List <BLL.Core.Domain.CompartWornExtViewModel> modelList = new List <BLL.Core.Domain.CompartWornExtViewModel>();

            foreach (var s in equipmentArray)
            {
                int equipmentId = 0;
                Int32.TryParse(s, out equipmentId);
                if (equipmentId == 0)
                {
                    continue;
                }
                BLL.Core.Domain.Equipment LogicalEquipment = new BLL.Core.Domain.Equipment(new DAL.UndercarriageContext(), equipmentId);
                modelList.AddRange(LogicalEquipment.getWornLimitList());
            }
            foreach (var model in modelList)
            {
                int max = 0;
                if (model.ITMExtList != null && model.ITMExtList.Count > max)
                {
                    max = model.ITMExtList.Count;
                }
                if (model.CATExtList != null && model.CATExtList.Count > max)
                {
                    max = model.CATExtList.Count;
                }
                if (model.KomatsuExtList != null && model.KomatsuExtList.Count > max)
                {
                    max = model.KomatsuExtList.Count;
                }
                if (model.HitachiExtList != null && model.HitachiExtList.Count > max)
                {
                    max = model.HitachiExtList.Count;
                }
                if (model.LiebherrExtList != null && model.LiebherrExtList.Count > max)
                {
                    max = model.LiebherrExtList.Count;
                }

                for (int k = 0; k < max; k++)
                {
                    bool ITM      = model.ITMExtList != null && model.ITMExtList.Count > k ? true : false;
                    bool CAT      = model.CATExtList != null && model.CATExtList.Count > k ? true : false;
                    bool Komatsu  = model.KomatsuExtList != null && model.KomatsuExtList.Count > k ? true : false;
                    bool Hitachi  = model.HitachiExtList != null && model.HitachiExtList.Count > k ? true : false;
                    bool Liebherr = model.LiebherrExtList != null && model.LiebherrExtList.Count > k ? true : false;

                    var res = new LimitsEntity
                    {
                        CompartIdAuto = model.Id,
                        Method        = getMethodById((int)model.method)
                    };
                    if (ITM)
                    {
                        res.CompartMeasurePointId = model.ITMExtList.ElementAt(k).MeasurePointId ?? 0;
                        res.ITMTool             = GetToolCode(model.ITMExtList.ElementAt(k).track_tools_auto);
                        res.StartDepthNew       = model.ITMExtList.ElementAt(k).start_depth_new;
                        res.WearDepth10Percent  = model.ITMExtList.ElementAt(k).wear_depth_10_percent;
                        res.WearDepth20Percent  = model.ITMExtList.ElementAt(k).wear_depth_20_percent;
                        res.WearDepth30Percent  = model.ITMExtList.ElementAt(k).wear_depth_30_percent;
                        res.WearDepth40Percent  = model.ITMExtList.ElementAt(k).wear_depth_40_percent;
                        res.WearDepth50Percent  = model.ITMExtList.ElementAt(k).wear_depth_50_percent;
                        res.WearDepth60Percent  = model.ITMExtList.ElementAt(k).wear_depth_60_percent;
                        res.WearDepth70Percent  = model.ITMExtList.ElementAt(k).wear_depth_70_percent;
                        res.WearDepth80Percent  = model.ITMExtList.ElementAt(k).wear_depth_80_percent;
                        res.WearDepth90Percent  = model.ITMExtList.ElementAt(k).wear_depth_90_percent;
                        res.WearDepth100Percent = model.ITMExtList.ElementAt(k).wear_depth_100_percent;
                        res.WearDepth110Percent = model.ITMExtList.ElementAt(k).wear_depth_110_percent;
                        res.WearDepth120Percent = model.ITMExtList.ElementAt(k).wear_depth_120_percent;
                    }
                    if (CAT)
                    {
                        res.CompartMeasurePointId = model.CATExtList.ElementAt(k).MeasurePointId ?? 0;
                        res.CATTool           = GetToolCode(model.CATExtList.ElementAt(k).track_tools_auto);
                        res.Slope             = model.CATExtList.ElementAt(k).slope;
                        res.AdjToBase         = model.CATExtList.ElementAt(k).adjust_base;
                        res.HiInflectionPoint = model.CATExtList.ElementAt(k).hi_inflectionPoint;
                        res.HiSlope1          = model.CATExtList.ElementAt(k).hi_slope1;
                        res.HiIntercept1      = model.CATExtList.ElementAt(k).hi_intercept1;
                        res.HiSlope2          = model.CATExtList.ElementAt(k).hi_slope2;
                        res.HiIntercept2      = model.CATExtList.ElementAt(k).hi_intercept2;
                        res.MiInflectionPoint = model.CATExtList.ElementAt(k).mi_inflectionPoint;
                        res.MiSlope1          = model.CATExtList.ElementAt(k).mi_slope1;
                        res.MiIntercept1      = model.CATExtList.ElementAt(k).mi_intercept1;
                        res.MiSlope2          = model.CATExtList.ElementAt(k).mi_slope2;
                        res.MiIntercept2      = model.CATExtList.ElementAt(k).mi_intercept2;
                    }
                    if (Komatsu)
                    {
                        res.CompartMeasurePointId = model.KomatsuExtList.ElementAt(k).MeasurePointId ?? 0;
                        res.KomatsuTool           = GetToolCode(model.KomatsuExtList.ElementAt(k).track_tools_auto);
                        res.ImpactSecondOrder     = model.KomatsuExtList.ElementAt(k).impact_secondorder;
                        res.NormalSecondOrder     = model.KomatsuExtList.ElementAt(k).normal_secondorder;
                        res.ImpactSlope           = model.KomatsuExtList.ElementAt(k).impact_slope;
                        res.ImpactIntercept       = model.KomatsuExtList.ElementAt(k).impact_intercept;
                        res.NormalSlope           = model.KomatsuExtList.ElementAt(k).normal_slope;
                        res.NormalIntercept       = model.KomatsuExtList.ElementAt(k).normal_intercept;
                    }

                    if (Hitachi)
                    {
                        res.CompartMeasurePointId = model.HitachiExtList.ElementAt(k).MeasurePointId ?? 0;
                        res.HitachiTool           = GetToolCode(model.HitachiExtList.ElementAt(k).track_tools_auto);
                        res.ImpactSlopeHit        = model.HitachiExtList.ElementAt(k).impact_slope;
                        res.ImpactInterceptHit    = model.HitachiExtList.ElementAt(k).impact_intercept;
                        res.NormalSlopeHit        = model.HitachiExtList.ElementAt(k).normal_slope;
                        res.NormalInterceptHit    = model.HitachiExtList.ElementAt(k).normal_intercept;
                    }
                    if (Liebherr)
                    {
                        res.CompartMeasurePointId = model.LiebherrExtList.ElementAt(k).MeasurePointId ?? 0;
                        res.LiebherrTool          = GetToolCode(model.LiebherrExtList.ElementAt(k).track_tools_auto);
                        res.ImpactSlopeLie        = model.LiebherrExtList.ElementAt(k).impact_slope;
                        res.ImpactInterceptLie    = model.LiebherrExtList.ElementAt(k).impact_intercept;
                        res.NormalSlopeLie        = model.LiebherrExtList.ElementAt(k).normal_slope;
                        res.NormalInterceptLie    = model.LiebherrExtList.ElementAt(k).normal_intercept;
                    }
                    resultList.Add(res);
                }
            }
            return(resultList);
        }
        /// <summary>
        /// Rope shovel
        /// </summary>
        /// <param name="inspection"></param>
        /// <returns></returns>
        public BLL.Core.Domain.ResultMessageExtended SaveUcRopeShovelInspection(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
            };

            /////////////////
            // Rope Shovel
            BLL.Interfaces.IGeneralInspectionModel GeneralInspection = new BLL.Core.ViewModel.GeneralInspectionViewModel
            {
                Date            = Params.EquipmentInspection.inspection_date,
                SMU             = (int)Params.EquipmentInspection.smu,
                TrammingHours   = inspection.TrammingHours,
                CustomerContact = inspection.CustomerContact,
                InspectionNotes = inspection.InspectorComments,
                DocketNo        = Params.EquipmentInspection.docket_no,
                Impact          = inspection.Impact,
                Abrasive        = inspection.Abrasive,
                Moisture        = inspection.Moisture,
                Packing         = inspection.Packing,
                JobSiteNotes    = inspection.JobsiteComments
            };

            /////////////////
            // Rope Shovel
            //using (BLL.Core.Domain.Action UCAction = new BLL.Core.Domain.Action(new DAL.UndercarriageContext(), EquipmentAction, Params))
            using (BLL.Core.Domain.Action UCAction = new BLL.Core.Domain.Action(new DAL.UndercarriageContext(), EquipmentAction, GeneralInspection))
            {
                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;
                }
                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);
            }
        }
Пример #4
0
        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);
            }
        }