private ArrestReportSaveResult SaveReport()
 {
     try
     {
         Dictionary <String, String> validationErrors;
         if (Report.Validate(out validationErrors))
         {
             ComputerReportsController.SaveArrestRecord(Report);
             if (Report == Globals.PendingArrestReport)
             {
                 Globals.PendingArrestReport = new ArrestReport();
             }
             NotifyForEvent(ArrestReportSaveResult.SAVE);
             return(ArrestReportSaveResult.SAVE);
         }
         else
         {
             if (OnArrestReportValidationError != null)
             {
                 OnArrestReportValidationError(this, validationErrors);
             }
             return(ArrestReportSaveResult.SAVE_ERROR);
         }
     }
     catch (Exception e)
     {
         Function.Log(e.ToString());
         return(ArrestReportSaveResult.SAVE_FAILED);
     }
 }
Exemple #2
0
        internal async static void ShowPedView()
        {
            if (!LastSelected || !LastSelected.Validate())
            {
                return;
            }
            try
            {
                var reports = await ComputerReportsController.GetArrestReportsForPedAsync(LastSelected);

                var trafficCitations = await ComputerReportsController.GetTrafficCitationsForPedAsync(LastSelected);

                if (trafficCitations != null)
                {
                    Function.Log("Found citations for ped");
                }
                else
                {
                    Function.Log("Citations for ped are null");
                }
                Globals.Navigation.Push(new ComputerPedViewExtended(new DetailedEntity(LastSelected, reports, trafficCitations)));
            } catch (Exception e)
            {
                Function.Log(e.ToString());
            }
        }
        public override void InitializeLayout()
        {
            base.InitializeLayout();
            this.Position = this.GetLaunchPosition();
            this.Window.DisableResizing();
            Function.LogDebug("Populating ALPR list");
            AlprDetectedVehicles.Clear();
            PopulateAnprList();
            list_collected_tags.AllowMultiSelect = false;
            list_manual_results.AllowMultiSelect = false;
            list_collected_tags.RowSelected     += onListItemSelected;
            list_manual_results.RowSelected     += onListItemSelected;
            text_manual_name.SubmitPressed      += onSearchSubmit;
            Function.LogDebug("Checking currently pulled over");
            var currentPullover = ComputerVehicleController.CurrentlyPulledOver;

            if (currentPullover != null && AlprDetectedVehicles.Find(x => x.Vehicle == currentPullover.Vehicle) == null)
            {
                AlprDetectedVehicles.Add(currentPullover);
            }
            foreach (var vehicle in AlprDetectedVehicles)
            {
                list_collected_tags.AddVehicle(vehicle);
                ComputerReportsController.generateRandomHistory(vehicle);
            }
        }
Exemple #4
0
        private void ButtonClicked(Base sender, ClickedEventArgs arguments)
        {
            if (sender == btn_finish.Component || sender == btn_finish_new.Component)
            {
                Function.LogDebug("ButtonClicked");
                if (labeled_vehicle_type.Component.SelectedItem.UserData is String && String.IsNullOrEmpty(labeled_vehicle_type.Component.SelectedItem.UserData as String))
                {
                    OnValidationError(sender, new Dictionary <string, string>()
                    {
                        { "Vehicle Type", "Cannot be Select One" }
                    });
                    NotifyForEvent(TrafficCitationSaveResult.SAVE_ERROR);
                    return;
                }

                UpdateCitationFromFields();

                Dictionary <String, String> failReasons;
                if (!Citation.Validate(out failReasons))
                {
                    OnValidationError(sender, failReasons);
                    NotifyForEvent(TrafficCitationSaveResult.SAVE_ERROR);
                }
                else
                {
                    try
                    {
                        Citation = ComputerReportsController.SaveTrafficCitation(Citation);
                        //if (Globals.PendingTrafficCitation == Citation) Globals.PendingTrafficCitation = null;
                        NotifyForEvent(TrafficCitationSaveResult.SAVE);

                        if (sender == btn_finish_new.Component)
                        {
                            Globals.PendingTrafficCitation = TrafficCitation.CloneFromCitation(Citation);
                            ChangeCitation(Globals.PendingTrafficCitation);
                            new MessageBox(this, "Saved citation. Creating new");
                            BindNeeded = true;
                            BindDataFromCitation();
                        }
                        else
                        {
                            if (this.Container != null)
                            {
                                this.Container.Close();
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        NotifyForEvent(TrafficCitationSaveResult.SAVE_FAILED);
                        new MessageBox(this, String.Format("Failed to save citation.. {0}", e.Message), "Failure saving");
                    }
                }
            }
        }
 private void ReportsClickedHandler(Base sender, ClickedEventArgs e)
 {
     if (sender == btn_arrest_history)
     {
         ComputerReportsController.ShowArrestReportList();
     }
     else if (sender == btn_citation_history)
     {
         ComputerReportsController.ShowTrafficCitationList();
     }
 }
Exemple #6
0
        internal async static void ShowVehicleDetails()
        {
            if (!LastSelected || !LastSelected.Validate())
            {
                return;
            }
            var reports = await ComputerReportsController.GetArrestReportsForPedAsync(LastSelected);

            var trafficCitations = await ComputerReportsController.GetTrafficCitationsForPedAsync(LastSelected);

            Globals.Navigation.Push(new ComputerVehicleViewExtendedContainer(new DetailedEntity(LastSelected, reports, trafficCitations)));
        }
Exemple #7
0
 private void OpenReport(object sender, TrafficCitation citation)
 {
     if (citation != null)
     {
         if (OnTrafficCitationSelected == null)
         {
             ComputerReportsController.ShowTrafficCitationView(citation);
         }
         else
         {
             OnTrafficCitationSelected(this, citation);
         }
     }
 }
 private async void OpenReport(ArrestReport report)
 {
     if (report != null)
     {
         if (OnArrestReportSelected == null)
         {
             await ComputerReportsController.ShowArrestReportView(report);
         }
         else
         {
             OnArrestReportSelected(report);
         }
     }
 }
        internal static void ShowVehicleDetails()
        {
            if (!LastSelected || !LastSelected.Validate())
            {
                return;
            }
            var reports          = ComputerReportsController.GetArrestReportsForPed(LastSelected);
            var trafficCitations = ComputerReportsController.GetTrafficCitationsForPed(LastSelected);

            if (LastSelected != null && LastSelected.Vehicle != null && LastSelected.Vehicle.IsValid() &&
                LastSelected.Ped != null && LastSelected.Ped.IsValid())
            {
                Globals.Navigation.Push(new ComputerVehicleViewExtendedContainer(new DetailedEntity(LastSelected, reports, trafficCitations)));
            }
        }
Exemple #10
0
        private void ReportsClickedHandler(Base sender, ClickedEventArgs e)
        {
            //if (sender == btn_browse_report)
            //    ComputerReportsController.ShowTrafficCitationList();
            //else if(sender == btn_arrest_report)
            //ComputerReportsController.ShowTrafficCitationCreate(null);

            if (sender == btn_browse_report)
            {
                ComputerReportsController.ShowArrestReportList();
            }
            else if (sender == btn_arrest_report)
            {
                ComputerReportsController.ShowArrestReportCreate(null, null);
            }
        }
        private void OnQuickAction(object sender, QuickActions action)
        {
            switch (action)
            {
            case QuickActions.CREATE_TRAFFIC_CITATION:
            {
                ComputerReportsController.ShowTrafficCitationCreate(null, DetailedEntity.Entity);
                return;
            }

            case QuickActions.CREATE_ARREST_REPORT:
            {
                ComputerReportsController.ShowArrestReportCreate(DetailedEntity.Entity, null);
                return;
            }
            }
        }
        private void PedViewQuickActionSelected(object sender, ComputerPedView.QuickActions action)
        {
            switch (action)
            {
            case ComputerPedView.QuickActions.CREATE_ARREST_REPORT:
            {
                ComputerReportsController.ShowArrestReportCreate(DetailedEntity.Entity, PedCreateArrestReportActions);
                return;
            }

            case ComputerPedView.QuickActions.CREATE_TRAFFIC_CITATION:
            {
                ComputerReportsController.ShowTrafficCitationCreate(Globals.PendingTrafficCitation, DetailedEntity.Entity, PedCreateTrafficCitationActions);
                return;
            }
            }
        }
        private void OnQuickAction(object sender, QuickActions action)
        {
            switch (action)
            {
            case QuickActions.BLIP_VEHICLE:
                Function.LogDebug("ActionSelected Blip Vehicle");
                ComputerVehicleController.BlipVehicle(Vehicle, System.Drawing.Color.Yellow);
                break;

            case QuickActions.CREATE_TRAFFIC_CITATION:
                ComputerReportsController.ShowTrafficCitationCreate(null, DetailedEntity.Entity);
                break;

            case QuickActions.CREATE_ARREST_REPORT_FOR_DRIVER:
                ComputerReportsController.ShowArrestReportCreate(DetailedEntity.Entity, null);
                break;
            }
        }
Exemple #14
0
 public void PopulateStoppedPedsList()
 {
     try
     {
         ComputerPedController controller = ComputerPedController.Instance;
         var peds = controller.PedsCurrentlyStoppedByPlayer;
         list_collected_ids.Clear();
         foreach (var entity in peds.Select(x => controller.LookupPersona(x)))
         {
             if (entity != null)
             {
                 list_collected_ids.AddPed(entity);
                 ComputerReportsController.generateRandomHistory(entity);
             }
         }
     }
     catch (Exception e)
     {
         Function.Log(e.ToString());
     }
 }
        internal static void ShowPedView()
        {
            if (!LastSelected || !LastSelected.Validate())
            {
                return;
            }
            try
            {
                var arrestReports = ComputerReportsController.GetArrestReportsForPed(LastSelected);
                if (arrestReports != null && arrestReports.Count > 0)
                {
                    Function.Log("Found arrest report for ped");
                }
                else
                {
                    Function.Log("Arrest report for ped are null");
                }

                var trafficCitations = ComputerReportsController.GetTrafficCitationsForPed(LastSelected);
                if (trafficCitations != null && trafficCitations.Count > 0)
                {
                    Function.Log("Found citations for ped");
                }
                else
                {
                    Function.Log("Citations for ped are null");
                }

                if (LastSelected != null && LastSelected.FullName != null && LastSelected.Ped != null && LastSelected.Ped.IsValid())
                {
                    Function.LogDebug("Creating ComputerPedViewExtendedContainer");

                    Globals.Navigation.Push(new ComputerPedViewExtendedContainer(new DetailedEntity(LastSelected, arrestReports, trafficCitations)));
                }
            } catch (Exception e)
            {
                Function.Log(e.ToString());
            }
        }
        private void VehicleViewQuickActionSelected(object sender, ComputerVehicleDetails.QuickActions action)
        {
            switch (action)
            {
            case ComputerVehicleDetails.QuickActions.BLIP_VEHICLE:
            {
                ComputerVehicleController.BlipVehicle(DetailedEntity.Entity.Vehicle, System.Drawing.Color.Yellow);
                return;
            }

            case ComputerVehicleDetails.QuickActions.CREATE_TRAFFIC_CITATION:
            {
                ComputerReportsController.ShowTrafficCitationCreate(Globals.PendingTrafficCitation, DetailedEntity.Entity, PedCreateTrafficCitationActions);
                return;
            }

            case ComputerVehicleDetails.QuickActions.CREATE_ARREST_REPORT_FOR_DRIVER:
            {
                ComputerReportsController.ShowArrestReportCreate(DetailedEntity.Entity, PedCreateArrestReportActions);
                return;
            }
            }
        }
        private void ActionComboBoxItemSelected(Base sender, ItemSelectedEventArgs arguments)
        {
            var action = (QuickActions)arguments.SelectedItem.UserData;

            if (OnQuickActionSelected != null)
            {
                OnQuickActionSelected(this, action);
                return;
            }
            switch (action)
            {
            case QuickActions.CREATE_ARREST_REPORT:
            {
                ComputerReportsController.ShowArrestReportCreate(this.Entity, null);
                return;
            }

            case QuickActions.CREATE_TRAFFIC_CITATION:
            {
                ComputerReportsController.ShowTrafficCitationCreate(null, this.Entity);
                return;
            }
            }
        }
Exemple #18
0
        private void CheckForDeliverTicketTrigger()
        {
            if (!Globals.HasTrafficTicketsInHand() && (ShouldEndPullover.HasValue && ShouldEndPullover.Value) && !Game.LocalPlayer.Character.HasScenario())
            {
                ShouldEndPullover = null;

                GameFiber.StartNew(() =>
                {
                    if (Game.LocalPlayer.Character.LastVehicle && !Game.LocalPlayer.Character.LastVehicle.HasDriver)
                    {
                        Game.DisplayNotification("The driver will wait until you are back in your vehicle before taking off");
                    }

                    while (Game.LocalPlayer.LastVehicle && !Game.LocalPlayer.LastVehicle.HasDriver)
                    {
                        GameFiber.Sleep(1000); //Wait for the player to enter their vehicle
                    }

                    Function.Log("Starting Ending pull over wait timer for ped to leave");
                    var stopAt = DateTime.Now.AddMilliseconds(4000); //have the sadPed drive off in 4 seconds if the traffic stop isnt over
                    while (DateTime.Now < stopAt)
                    {
                        GameFiber.Sleep(500);
                    }
                    try
                    {
                        lock (mPromptedCitations) mPromptedCitations.Clear();
                        var handle = Functions.GetCurrentPullover();
                        if (handle != null)
                        {
                            Functions.ForceEndCurrentPullover();
                        }
                    }
                    catch (Exception e)
                    {
                        Function.LogCatch(e.Message);
                    }
                });
            }
            else if (Globals.HasTrafficTicketsInHand() && !Game.LocalPlayer.Character.HasScenario()) //only run when we have tickets and we're not already doing WORLD_HUMAN_CLIPBOARD
            {
                var stopped = World.GetEntities(Game.LocalPlayer.Character.Position, 2.5f, GetEntitiesFlags.ConsiderAllPeds);
                if (stopped != null && stopped.Count() > 0)
                {
                    var pedsAboutToGetTheSmackDown = stopped.Select(x => x as Ped)
                                                     .Where(x => x.DistanceTo(Game.LocalPlayer.Character.FrontPosition) < 2f && Globals.GetTrafficCitationsInHandForPed(x) != null); //may have to add ordering by distance
                    foreach (var sadPed in pedsAboutToGetTheSmackDown)
                    {
                        if (Configs.GiveTicketsToPed.Any(x => x.IsPressed))
                        {
                            //The user wants to give the sad ped the ticket now..
                            GameFiber.StartNew(() =>
                            {
                                List <TrafficCitation> citations = Globals.GetTrafficCitationsInHandForPed(sadPed);
                                Globals.RemoveTrafficCitationsInHandForPed(sadPed);

                                //var item = new Rage.Object(new Model("prop_cs_documents_01"), Game.LocalPlayer.Character.Position);
                                var item = new Rage.Object(new Model("prop_cs_pamphlet_01"), Game.LocalPlayer.Character.GetOffsetPositionUp(3f));
                                item.AttachTo(Game.LocalPlayer.Character, Game.LocalPlayer.Character.GetBoneIndex(PedBoneId.RightThumb1), new Vector3(0.11f, -0.015f, 0f), new Rotator(-195f, 90f, 0f));
                                GameFiber.StartNew(delegate
                                {
                                    GameFiber.Sleep(1300);
                                    item.Detach();
                                    item.Delete();
                                });
                                Game.LocalPlayer.Character.Tasks.PlayAnimation("mp_common", "givetake1_b", 3f, AnimationFlags.None).WaitForCompletion();
                                if (Functions.GetCurrentPullover() != null)
                                {
                                    ShouldEndPullover = true;
                                }
                                if (sadPed != null && sadPed.IsValid() && citations != null && citations.Count > 0)
                                {
                                    // mark ped has been given citation
                                    sadPed.Metadata.citedByComputerPlus = true;
                                    // create court case for citation
                                    ComputerReportsController.createCourtCaseForCitations(citations, sadPed);
                                }
                            });
                            break;
                        }
                        else
                        {
                            //Prompt the user that they can deliver the ticket
                            OnFacingPedWithPendingTickets(null, sadPed, Globals.GetTrafficCitationsInHandForPed(sadPed));
                        }
                    }
                }
            }
            else if (Functions.GetCurrentPullover() == null && Globals.HasTrafficTicketsInHand())
            {
                Globals.ClearTrafficCitationsInHand();
                return;
            }
        }