Esempio n. 1
0
 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();
         }
     }
 }
Esempio n. 2
0
        /// <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();
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Сериализира ЕИСПП Пакет
 /// </summary>
 /// <param name="package">Пакет за сериализация</param>
 /// <returns></returns>
 public static string SerializeEisppPackage(EisppPackage package)
 {
     return(SerializeObject(package, true));
 }