public void SetIsSelectedAndClear(EisppPackage model) { foreach (var eisppEvent in model.Data.Events) { if (eisppEvent.CriminalProceeding.Case.ConnectedCases != null) { eisppEvent.CriminalProceeding.Case.ConnectedCases = eisppEvent.CriminalProceeding.Case.ConnectedCases .Where(x => x.ConnectedCaseId == eisppEvent.CriminalProceeding.Case.ConnectedCaseId) .ToArray(); } if (eisppEvent.CriminalProceeding.Case.Persons != null) { eisppEvent.CriminalProceeding.Case.Persons = eisppEvent.CriminalProceeding.Case.Persons.Where(x => x.IsSelected).ToArray(); foreach (var person in eisppEvent.CriminalProceeding.Case.Persons) { if (person.Measures != null) { person.Measures = person.Measures.Where(x => x.IsSelected).ToArray(); } if (person.Punishments != null) { person.Punishments = person.Punishments .Where(x => x.PunishmentKind < 90000 && x.IsSelected) .ToArray(); foreach (var punishment in person.Punishments) { ClearPunishmentUnnecessaryField(punishment); } } } } if (eisppEvent.CriminalProceeding.Case.CPPersonCrimes != null) { eisppEvent.CriminalProceeding.Case.CPPersonCrimes = eisppEvent.CriminalProceeding.Case.CPPersonCrimes.Where(x => x.IsSelected).ToArray(); foreach (var cpPersonCrimes in eisppEvent.CriminalProceeding.Case.CPPersonCrimes) { if (cpPersonCrimes.CrimeSanction?.CrimePunishments != null) { cpPersonCrimes.CrimeSanction.CrimePunishments = cpPersonCrimes.CrimeSanction.CrimePunishments.Where(x => x.IsSelected && x.PunishmentKind < 90000).ToArray(); } } foreach (var crime in eisppEvent.CriminalProceeding.Case.Crimes) { crime.IsSelected = eisppEvent.CriminalProceeding.Case.CPPersonCrimes.Any(x => x.CrimeId == crime.CrimeId); } eisppEvent.CriminalProceeding.Case.Crimes = eisppEvent.CriminalProceeding.Case.Crimes.Where(x => x.IsSelected).ToArray(); } } }
/// <summary> /// От пробационни мерки прави наказания /// </summary> /// <param name="eisppEvent">Събитие</param> public void CreatePunismentFromProbationMeasuares(EisppPackage model) { int sid = -20000; foreach (var eisppEvent in model.Data.Events) { if (eisppEvent.CriminalProceeding.Case.Persons != null) { foreach (var person in eisppEvent.CriminalProceeding.Case.Persons.Where(x => x.IsSelected)) { if (person.Punishments != null) { var punishments = new List <Punishment>(); foreach (var punishment in person.Punishments.Where(x => x.IsSelected)) { if (punishment.PunishmentKind == PunismentKind.probation && punishment.ProbationMeasures != null) { bool isSetFirst = false; foreach (var probationMeasure in punishment.ProbationMeasures.Where(x => x.IsSelected)) { if (!isSetFirst) { punishment.ProbationMeasure = probationMeasure; isSetFirst = true; } else { var newPunishment = new Punishment(); newPunishment.ProbationMeasure = probationMeasure; newPunishment.PunishmentId = sid--; newPunishment.CasePersonSentencePunishmentId = punishment.CasePersonSentencePunishmentId; newPunishment.PunishmentType = punishment.PunishmentType; newPunishment.PunishmentKind = punishment.PunishmentKind; newPunishment.PunishmentRegime = punishment.PunishmentRegime; newPunishment.ServingType = punishment.ServingType; newPunishment.StructureId = punishment.StructureId; newPunishment.IsSelected = punishment.IsSelected; newPunishment.PunishmentYears = punishment.PunishmentYears; newPunishment.PunishmentMonths = punishment.PunishmentMonths; newPunishment.PunishmentWeeks = punishment.PunishmentWeeks; newPunishment.PunishmentDays = punishment.PunishmentDays; newPunishment.ProbationYears = punishment.ProbationYears; newPunishment.ProbationMonths = punishment.ProbationMonths; newPunishment.ProbationWeeks = punishment.ProbationWeeks; newPunishment.ProbationDays = punishment.ProbationDays; newPunishment.PunishmentActivity = punishment.PunishmentActivity; newPunishment.PunishmentActivityDate = punishment.PunishmentActivityDate; punishments.Add(newPunishment); } probationMeasure.MeasureId = sid--; } } } var personPunishments = person.Punishments.ToList(); personPunishments.AddRange(punishments); person.Punishments = personPunishments.ToArray(); } } } } }
/// <summary> /// Изпраща съобщение до ЕИСПП /// </summary> /// <param name="mq">Съобщение от опашката</param> protected override async Task SendMQ(MQEpep mq) { try { string message = null; bool isReadyMessage = false; if (mq.Content != null) { message = Encoding.UTF8.GetString(mq.Content); // isReadyMessage = true; } else { var eisppEventItem = repo.AllReadonly <EisppEventItem>() .Where(x => x.MQEpepId == mq.Id) .FirstOrDefault(); if (!string.IsNullOrEmpty(eisppEventItem.RequestXML)) { isReadyMessage = true; message = eisppEventItem.RequestXML; } else { var model = JsonConvert.DeserializeObject <EisppPackage>(eisppEventItem.RequestData); eisppRulesService.SetIsSelectedAndClear(model); message = XmlUtils.SerializeEisppPackage(model); } } if (!isReadyMessage) { if (message.StartsWith(byteOrderMarkUtf8, StringComparison.Ordinal)) { message = message.Remove(0, byteOrderMarkUtf8.Length); } EisppPackage package = XmlUtils.DeserializeXml <EisppPackage>(message); if (package != null) { var eisppEvent = package.Data.Events.Where(x => x.EventKind == EventKind.NewEvent).FirstOrDefault(); if (eisppEvent == null && package.Data.Events.Length > 0) { eisppEvent = package.Data.Events[0]; } var structureId = eisppEvent.StructureId; var eventType = eisppEvent.EventType; package.CorrelationId = mq.MQId; package.SenderNode = senderNode; package.ReceiverNode = receiverNode; package.ReceiverStructure = receiverStructure; package.MessageType = messageType; int eventTypeResSid = eventType; var eisppEventOld = package.Data.Events.Where(x => x.EventKind == EventKind.OldEvent).FirstOrDefault(); if (eisppEventOld?.EventType > 0) { eventTypeResSid = EventType.DeleteEvent; if (eisppEvent.EventKind == EventKind.NewEvent) { eventTypeResSid = EventType.ChangeEvent; } } package.Data.Context = new Context() { StructureId = structureId, EventDate = eisppEvent.EventDate, EventType = eventType > 0 ? eventType : 0, ResourceId = eisppRulesService.GetResSidFromRules(eventTypeResSid) }; if (package.Data.Context.ResourceId <= 0) { package.Data.Context.ResourceId = GetNomValueInt(EISPPConstants.EisppMapping.ResSid, eisppEvent.CriminalProceeding.Case.LegalProceedingType); } if (package.Data?.Context != null) { package.Data.Context.WorkingMode = workingMode; package.Data.Context.UserSystemId = userSystemId; package.Data.Context.WorkPlaceId = workPlaceId; } else { throw new ArgumentException("Context is required"); } foreach (var eisppEventItem in package.Data.Events) { if (eisppEventItem.CriminalProceeding?.Case?.Persons == null) { continue; } foreach (var person in eisppEventItem.CriminalProceeding.Case.Persons) { if (person.BirthPlace != null) { if ((person.BirthPlace.SettelmentAbroad == "0" || string.IsNullOrEmpty(person.BirthPlace.SettelmentAbroad)) && person.BirthPlace.SettelmentBg == 0 && person.BirthPlace.PlaceId == 0) { person.BirthPlace = null; } } } } if (eventType == EventType.GetCase) { eisppEvent.CriminalProceeding.Case.CaseSetupType = -1; eisppEvent.CriminalProceeding.Case.LegalProceedingType = -1; } message = XmlUtils.SerializeEisppPackage(package); message = await eisppRulesService.ApplyRules(structureId, message, eventType); } else { message = string.Empty; } } if (!string.IsNullOrEmpty(message)) { mq.Content = Encoding.UTF8.GetBytes(message); if (await Send(message)) { MarkAsSent(mq, message); } else { throw new ApplicationException("Error sending message!"); } } else { throw new ArgumentException("At least one Event is required"); } } catch (InvalidOperationException iop) { throw new ArgumentException("The content is not a valid EISPP package", iop); } }
/// <summary> /// Сериализира ЕИСПП Пакет /// </summary> /// <param name="package">Пакет за сериализация</param> /// <returns></returns> public static string SerializeEisppPackage(EisppPackage package) { return(SerializeObject(package, true)); }