/// <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); } }
/// <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); } }
/// <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); }
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); } } }
/// <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; }
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); } } }