/// <summary> /// Calculates the co channel for pmse. /// </summary> /// <param name="pmseDevice">The Program Making and Special Events device.</param> /// <returns>returns integer</returns> public static int CalculateCoChannelForPMSE(PmseAssignment pmseDevice) { var pmseChannelCentreFrequency = Conversion.DTTChannelToFrequency(pmseDevice.Channel) + 4; var pmseLowerChannelUpperBound = Conversion.DTTChannelToFrequency(pmseDevice.Channel); var pmseUpperChannelLowerBound = Conversion.DTTChannelToFrequency(pmseDevice.Channel + 1); if (pmseDevice.FrequencyMHz + (pmseDevice.BandwidthMHz / 2.0) > pmseUpperChannelLowerBound) { return(pmseDevice.Channel + 1); } if (pmseDevice.FrequencyMHz - (pmseDevice.BandwidthMHz / 2.0) < pmseLowerChannelUpperBound) { return(pmseDevice.Channel - 1); } return(0); }
/// <summary> /// Processes the file. /// </summary> /// <param name="fileContent">The path.</param> /// <param name="fileName">Name of the file.</param> /// <param name="replyMessage">The reply message.</param> /// <returns>returns boolean.</returns> private bool ProcessWSDAssignmentFile(string[] fileContent, string fileName, out string replyMessage) { AuditId auditId = AuditId.PmseSync; string methodName = "ProcessWSDAssignmentFile"; try { // Begin Log transaction this.PmseAssignmentLogger.Log(TraceEventType.Information, LoggingMessageId.PmseSyncGenericMessage, "Enter " + methodName + " for file : " + fileName); List <PmseAssignment> lstPmseAssignments = new List <PmseAssignment>(); OSGLocation assignmentLocation; foreach (var line in fileContent) { string[] values = line.Split(','); if (values[0] == "Assignment_ID") { continue; } try { PmseAssignment pmseAssignment = new PmseAssignment(); if (!this.CheckEquipmentType(values[1]) || !this.CheckSituationID(values[9]) || values[0] == string.Empty || !this.CheckRequiredInteger(values[2]) || !this.CheckRequiredInteger(values[3]) || !this.CheckFrequency(values[5]) || !this.CheckRequiredInteger(values[6]) || values[7] == string.Empty || values[8] == string.Empty) { lstPmseAssignments = null; break; } else { assignmentLocation = Conversion.RoundTo10(values[2].ToDouble(), values[3].ToDouble()); pmseAssignment.OriginalEasting = values[2].ToDouble(); pmseAssignment.OriginalNorthing = values[3].ToDouble(); pmseAssignment.PartitionKey = fileName; pmseAssignment.RowKey = values[0]; pmseAssignment.Assignment_ID = values[0]; pmseAssignment.Equipment_Type_ID = values[1]; pmseAssignment.Easting = assignmentLocation.Easting; pmseAssignment.Northing = assignmentLocation.Northing; pmseAssignment.AntennaHeightMetres = values[4].ToDouble(); pmseAssignment.FrequencyMHz = values[5].ToDouble(); pmseAssignment.BandwidthMHz = values[6].ToDouble(); pmseAssignment.Start = values[7]; pmseAssignment.Finish = values[8]; pmseAssignment.SituationID = values[9]; pmseAssignment.Channel = Conversion.DTTFrequencyToChannel(pmseAssignment.FrequencyMHz); pmseAssignment.ClutterValue = (int)this.TerrainData.CalculateClutter(pmseAssignment.Easting, pmseAssignment.Northing); lstPmseAssignments.Add(pmseAssignment); } } catch (Exception) { this.PmseAssignmentLogger.Log(TraceEventType.Error, LoggingMessageId.PmseSyncGenericMessage, string.Format("Error in File:{0}, Line :{1}", fileName, line)); lstPmseAssignments = null; } } if (lstPmseAssignments != null && lstPmseAssignments.Count > 0 && lstPmseAssignments.Select(obj => obj.RowKey).Distinct().Count() == lstPmseAssignments.Count) { List <PmseAssignment> existingPMSEData = this.CommonDalc.FetchEntity <PmseAssignment>(Utils.GetRegionalTableName(Constants.PMSEAssignmentsTable), null); if (existingPMSEData.Count > 0) { this.CommonDalc.DeleteRecords(Constants.PMSEAssignmentsTable, existingPMSEData); } this.PmseSync.InsertFileDataToDatabase(lstPmseAssignments); this.PmseAssignmentLogger.Log(TraceEventType.Information, LoggingMessageId.PmseSyncGenericMessage, "Exit " + methodName + " for file : " + fileName); replyMessage = Utils.Configuration["mailBodySyncSuccessfully"]; return(true); } else { replyMessage = Utils.Configuration["mailBodyFileNotValid"]; this.PmseAssignmentLogger.Log(TraceEventType.Error, LoggingMessageId.PmseSyncGenericMessage, "Validation failed while processing file " + fileName); this.PmseAssignmentAuditor.Audit(auditId, AuditStatus.Failure, this.stopWatch.ElapsedMilliseconds, methodName + "Validation failed while processing file " + fileName); return(false); } } catch (Exception e) { replyMessage = Utils.Configuration["mailBodyFailToProcessFile"]; this.PmseAssignmentLogger.Log(TraceEventType.Error, LoggingMessageId.PmseSyncGenericMessage, "Exception Occured while processing file " + fileName + " Exception :- " + e.ToString()); this.PmseAssignmentAuditor.Audit(auditId, AuditStatus.Failure, this.stopWatch.ElapsedMilliseconds, methodName + "Exception Occured while processing file " + fileName + " Exception :- " + e.ToString()); return(false); } }
private void ProcessWSDAssignmentFiles(string stage) { int stageNumber = Convert.ToInt32(Regex.Match(stage, @"\d+").Value); string inputFileFormat = "Stage {0} - Lot{1} - PMSE assignments.csv"; string directoryPath = this.GetDirectoryPath(stage); string[] fileNumbers = null; switch (stage) { case "Stage2": fileNumbers = new string[] { "5A", "5B", "6A", "6C", "7A", "7B", "7C", "8A", "8B" }; break; case "Stage3": fileNumbers = new string[] { "9" }; break; case "Stage4": fileNumbers = new string[] { "10" }; break; case "Stage5": fileNumbers = new string[] { "13", "14" }; break; case "Stage6": fileNumbers = new string[] { "16", "17" }; break; } foreach (string fileNumber in fileNumbers) { string stage2TableName = string.Format("RGN5{0}Lot{1}PMSEassignments", stage, fileNumber); this.Logger.Log(TraceEventType.Information, LoggingMessageId.PortalOfcomEvaluation, "processing of stage " + stage + " PMSE file " + fileNumber + " started at " + DateTime.Now); // Get All PmseAssigments IEnumerable <PmseAssignment> assignments = this.regionDataAccess.GetAllPmseAssignementEntities(stage2TableName); if (assignments.Count() > 0) { // delete all assignments this.regionDataAccess.DeletePmseEntities(assignments, stage2TableName); } string filePath = directoryPath + string.Format(inputFileFormat, stageNumber, fileNumber); List <PmseAssignment> pmseAssigments = new List <PmseAssignment>(); OSGLocation assignmentLocation; PmseAssignment pmseAssignment; string[] values; foreach (var line in File.ReadAllLines(filePath)) { values = line.Split(','); if (values[0] == "Assignment_ID" || string.IsNullOrEmpty(values[0])) { continue; } assignmentLocation = Conversion.RoundTo10(values[2].ToDouble(), values[3].ToDouble()); pmseAssignment = new PmseAssignment(); pmseAssignment.PartitionKey = "PMSE"; pmseAssignment.RowKey = values[0]; pmseAssignment.Assignment_ID = values[0]; pmseAssignment.Equipment_Type_ID = values[1]; pmseAssignment.OriginalEasting = values[2].ToDouble(); pmseAssignment.OriginalNorthing = values[3].ToDouble(); pmseAssignment.Easting = assignmentLocation.Easting; pmseAssignment.Northing = assignmentLocation.Northing; pmseAssignment.AntennaHeightMetres = values[4].ToDouble(); pmseAssignment.FrequencyMHz = values[5].ToDouble(); pmseAssignment.BandwidthMHz = values[6].ToDouble(); pmseAssignment.Start = values[7]; pmseAssignment.Finish = values[8]; pmseAssignment.SituationID = values[9]; pmseAssignment.Channel = Conversion.DTTFrequencyToChannel(pmseAssignment.FrequencyMHz); pmseAssignment.ClutterValue = 1; pmseAssigments.Add(pmseAssignment); } this.regionDataAccess.InsertPmseEntities(pmseAssigments, stage2TableName); this.Logger.Log(TraceEventType.Information, LoggingMessageId.PortalOfcomEvaluation, "processing of stage " + stage + " PMSE file " + fileNumber + " ended at " + DateTime.Now); } }