示例#1
0
        /// <summary>
        /// Iniciar trabajo ahora.
        /// </summary>
        /// <param name="horary"></param>
        /// <param name="callServer"></param>
        public void startJobNow(HoraryModel horary, CallServerModel callServer)
        {
            String idJob = horary.randomId + callServer.randomId + "now";

            getCallsRunningUtils();
            if (!callsRunningUtils.idsList.Contains(idJob))
            {
                startJobs(horary, callServer, true);
            }
        }
示例#2
0
        /// <summary>
        /// Colgar llamada ahora.
        /// </summary>
        public void hangUpNow(HoraryModel horary, CallServerModel callServer)
        {
            String idJob = horary.randomId + callServer.randomId + "now";

            if (callsRunningUtils.idsList.Contains(idJob))
            {
                if (playerUtilsMap.ContainsKey(idJob))
                {
                    playerUtilsMap[idJob].hangUpNow();
                    playerUtilsMap.Remove(idJob);
                }
                callsRunningUtils.idsList.Remove(idJob);
            }
        }
示例#3
0
        /// <summary>
        /// Iniciar trabajo ahora.
        /// </summary>
        /// <param name="horary">
        /// Horario.
        /// </param>
        /// <param name="callServer">
        /// Llamada al servidor.
        /// </param>
        /// <param name="startNow">
        /// Iniciar ahora. Por defecto falso.
        /// </param>
        private async void startJobs(HoraryModel horary, CallServerModel callServer, Boolean startNow = false)
        {
            if (startNow)
            {
                if (scheduler == null || scheduler.IsShutdown)
                {
                    initScheduler();
                    startScheduler();
                }
            }

            MediaBaseUtils mediaBase = null;

            if (callServer.mode.value.Equals("softphone"))
            {
                mediaBase = new SoftPhoneUtils();
            }
            else
            {
                mediaBase = new JackCableUtils();
            }

            String idJob = horary.randomId + callServer.randomId + (startNow ? "now" : "");
            String hour  = callServer.startAt == null || callServer.startAt.Length < 2 ? "00" : callServer.startAt.Substring(0, 2);//start:"12:30:10"
            String min   = callServer.startAt == null || callServer.startAt.Length < 5 ? "00" : callServer.startAt.Substring(3, 2);
            String sec   = callServer.startAt == null || callServer.startAt.Length < 8 ? "00" : callServer.startAt.Substring(6);

            if (playerUtilsMap.ContainsKey(idJob))
            {
                playerUtilsMap[idJob] = mediaBase;
            }
            else
            {
                playerUtilsMap.Add(idJob, mediaBase);
            }

            if (startNow)
            {
                getCallsRunningUtils();
                if (!callsRunningUtils.idsList.Contains(idJob))
                {
                    callsRunningUtils.idsList.Add(idJob);
                }
                setCallsRunningUtils();
            }

            JobDataMap jobDataMap = new JobDataMap();

            //softPhoneUtils.jobDataCommon = new JobDataCommon(automaticRingSystem.registrationRequired, automaticRingSystem.domainHost, automaticRingSystem.domainPort, horary.connectionCallServer, callServer, idJob);
            //jobDataMap.Put("softPhone", JsonConvert.SerializeObject(softPhoneUtils));

            if (callServer.mode.value.Equals("softphone"))
            {
                ((SoftPhoneUtils)mediaBase).jobDataCommon = new JobDataCommon(automaticRingSystem.registrationRequired, automaticRingSystem.domainHost, automaticRingSystem.domainPort, horary.connectionCallServer, callServer, idJob);
                jobDataMap.Put("softPhone", JsonConvert.SerializeObject((SoftPhoneUtils)mediaBase));
            }
            else
            {
                ((JackCableUtils)mediaBase).jobDataCommon = new JobDataCommon(automaticRingSystem.registrationRequired, automaticRingSystem.domainHost, automaticRingSystem.domainPort, horary.connectionCallServer, callServer, idJob);
                jobDataMap.Put("jackCable", JsonConvert.SerializeObject((JackCableUtils)mediaBase));
            }

            //Definir job.
            IJobDetail job = JobBuilder.Create <RingJobUtils>()
                             .WithIdentity(idJob, groupJobs)
                             .SetJobData(jobDataMap)
                             .Build();

            //Disparador de trabajos.
            ITrigger trigger;

            if (startNow)
            {
                //Disparador de trabajos ahora.
                trigger = TriggerBuilder.Create()
                          .WithIdentity(idJob, groupJobs)
                          .StartNow()
                          .ForJob(idJob, groupJobs)
                          .Build();
            }
            else
            {
                //Disparador de trabajos a hora y minuto de lunes a viernes: "0 30 10 ? * WED,FRI"
                trigger = TriggerBuilder.Create()
                          .WithIdentity(idJob, groupJobs)
                          .WithCronSchedule(sec + " " + min + " " + hour + " ? * MON-FRI")
                          .ForJob(idJob, groupJobs)
                          .Build();
            }

            //Eliminar trabajo si existe
            if (await scheduler.CheckExists(new JobKey(idJob, groupJobs)))
            {
                await scheduler.DeleteJob(new JobKey(idJob, groupJobs));
            }

            //Asignar trigger a job en el programador de llamadas(scheduler)
            await scheduler.ScheduleJob(job, trigger);

            //Sintaxis para asignarle varios triggers a un treabajo.
            //await scheduler.ScheduleJob(objJob, new[] { trigger, trigger1, trigger2, trigger3 }, true);
        }
示例#4
0
        private void dataGridViewHorary_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
            {
                try
                {
                    DataGridViewRow selectedRow = dataGridViewHorary.CurrentRow;
                    CallServerModel callServer  = selectedRow.DataBoundItem as CallServerModel;
                    switch (this.dataGridViewHorary.Columns[e.ColumnIndex].Name)
                    {
                    case "soundFileDataGridViewTextBoxColumn":
                        if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
                        {
                            callServer.soundFile = loadDataCellSoundFile(callServer.soundFile);
                        }
                        break;

                    case "ColumnCall":
                        if (mainController.hasServerParams())
                        {
                            if (horary.connectionCallServer.isValid())
                            {
                                if (callServer != null && File.Exists(callServer.soundFile.targetPath))
                                {
                                    DataGridViewButtonCell callTimeButtonCell = (DataGridViewButtonCell)dataGridViewHorary.CurrentCell;
                                    callTimeButtonCell.ReadOnly = true;
                                    mainController.startJobNow(horary, callServer);
                                    callTimeButtonCell.ReadOnly = false;
                                }
                            }
                            else
                            {
                                MessageBox.Show("Establezca los parámetros de la extensión IP.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Establezca los parametros del servidor.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        break;

                    case "ColumnEndCall":
                        if (mainController.hasServerParams())
                        {
                            if (horary.connectionCallServer.isValid())
                            {
                                if (callServer != null && File.Exists(callServer.soundFile.targetPath))
                                {
                                    DataGridViewButtonCell hangUpButtonCell = (DataGridViewButtonCell)dataGridViewHorary.CurrentCell;
                                    hangUpButtonCell.ReadOnly = true;
                                    mainController.hangUpNow(horary, callServer);
                                    hangUpButtonCell.ReadOnly = false;
                                }
                            }
                            else
                            {
                                MessageBox.Show("Establezca los parámetros de la extensión IP.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Establezca los parametros del servidor.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        break;

                    case "modeDataGridViewTextBoxColumn":
                        if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
                        {
                            callServer.mode = loadDataCellMode(callServer.mode);
                        }
                        break;
                    }
                }
                catch (Exception er)
                {
                    BaseUtils.log.Error(er);
                }
            }
        }
示例#5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="registrationRequired"></param>
 /// <param name="domainHost"></param>
 /// <param name="domainPort"></param>
 /// <param name="connectionCallServer"></param>
 /// <param name="callServer"></param>
 /// <param name="softPhoneUtilsList"></param>
 /// <param name="idJob"></param>
 //public JobDataCommon(bool registrationRequired, string domainHost, int domainPort, ConnectionCallServerModel connectionCallServer, CallServerModel callServer, List<string> softPhoneUtilsList, String idJob)
 public JobDataCommon(bool registrationRequired, string domainHost, int domainPort, ConnectionCallServerModel connectionCallServer, CallServerModel callServer, String idJob)
 {
     this.registrationRequired = registrationRequired;
     this.domainHost           = domainHost;
     this.domainPort           = domainPort;
     this.connectionCallServer = connectionCallServer;
     this.callServer           = callServer;
     //this.softPhoneUtilsList = softPhoneUtilsList;
     this.idJob = idJob;
 }
示例#6
0
        static void Main()
        {
            MainController.log.Info("App started!");
            Boolean run = true;

            if (!run)
            {
                //crear archivo JSON
                ValidateEntriesUtils validateEntriesUtils = new ValidateEntriesUtils();

                AutomaticRingSystemModel automaticRingSystem = new AutomaticRingSystemModel();
                automaticRingSystem.registrationRequired = true;
                automaticRingSystem.domainHost           = "100.50.40.3";
                automaticRingSystem.domainPort           = 5060;
                for (int i = 0; i < 1; i++)
                {
                    ConnectionCallServerModel connectionCallServer = new ConnectionCallServerModel();
                    connectionCallServer.displayName      = "1230";
                    connectionCallServer.userName         = "******";
                    connectionCallServer.registerName     = "1230";
                    connectionCallServer.registerPassword = "******";

                    HoraryModel horary = new HoraryModel("h" + i, connectionCallServer);
                    for (int a = 0; a < 2; a++)
                    {
                        int            s         = i + a;
                        String         sec       = s < 10 ? "0" : "" + s;
                        SoundFileModel soundFile = new SoundFileModel();
                        String         filename  = "helloworld" + a + ".mp3";
                        soundFile.name       = filename;
                        soundFile.targetPath = validateEntriesUtils.getMyDocumentsPath() + "\\" + Properties.Settings.Default.soundFolderName + "\\" + Properties.Settings.Default.horarySounds + "\\" + filename;
                        CallServerModel callServer = new CallServerModel(a + 1, "23:54:" + sec, 5, soundFile, true, "1300", "llamada " + a);
                        horary.callServerList.Add(callServer);
                    }
                    automaticRingSystem.horaryList.Add(horary);
                }

                string outputJSON       = JsonConvert.SerializeObject(automaticRingSystem);
                String jsonFileFullPath = validateEntriesUtils.getProgramDataPath() + "\\" + Properties.Settings.Default.jsonFileName + Properties.Settings.Default.jsonExtension;
                File.WriteAllText(jsonFileFullPath, outputJSON);

                try
                {
                    MainController.cypherUtils.FileEncrypt(jsonFileFullPath, Properties.Settings.Default.cypherPassword);
                    System.IO.File.Delete(jsonFileFullPath);
                }
                catch (Exception e)
                {
                    MainController.log.Error("Intentando guardar archivo json", e);
                }
                //crear archivo JSON FIN
            }

            if (run)
            {
                try
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new MainForm());
                }
                catch (Exception e)
                {
                    BaseUtils.log.Error(e);
                }
            }
        }