Exemple #1
0
        public async Task <long> InsertSanctionInfo(SanctionInfo data)
        {
            var caseParam = new DynamicParameters();

            caseParam.Add("@Type", data.Type);
            caseParam.Add("@Sanction", data.Sanction);
            caseParam.Add("@Value", data.Value);
            caseParam.Add("@CaseID", data.CaseID);
            caseParam.Add("@Out", dbType: DbType.Int64, direction: ParameterDirection.Output);

            await SqlMapper.ExecuteAsync(_unitOfWork.Connection,
                                         "InsertSanctionInfo",
                                         caseParam,
                                         commandType : CommandType.StoredProcedure,
                                         transaction : _unitOfWork.Transaction);

            var caseID = caseParam.Get <long>("@Out");

            return(caseID);
        }
        public async Task <long> Invoke(IUnitOfWork unitOfWork)
        {
            var dbContext = DbContext.From(unitOfWork);

            unitOfWork.BeginTransaction();

            var @case = await dbContext.Case.GetBasicByID(_caseID);

            @case.Status        = CaseStatus.PendingFOC;
            @case.Sanction      = Sanction.ImmediateSuspension;
            @case.SuspendedFrom = DateTime.UtcNow;
            await dbContext.Case.UpdateCaseInfo(@case);

            var sanction = new SanctionInfo
            {
                CaseID   = _caseID,
                Sanction = Sanction.ImmediateSuspension,
                Type     = SanctionInfoType.Recommended
            };

            sanction.ID = await dbContext.Sanction.InsertSanctionInfo(sanction);

            await dbContext.Case.MapCaseSanctionInfo(_caseID, sanction.ID);

            var certificates = await dbContext.Certificate.GetCertificate(_caseID);

            foreach (var certificate in certificates)
            {
                var certOldStatus = certificate.Status;
                certificate.Status         = CertificateStatus.Suspended;
                certificate.SuspendedUntil = @case.SuspendedFrom.Value.AddMonths(Int32.Parse(_data.Months));

                await dbContext.Certificate.UpdateCertificate(certificate);

                _eventBus.Publish(new OnCertificateStatusChangedEvent
                {
                    NewStatus = CertificateStatus.Suspended,
                    OldStatus = certOldStatus,
                    Number    = certificate.Number
                });
            }

            var action = await dbContext.Translation.GetTranslation(Locale.EN, "CaseImmediateSuspension");

            var _activityID = await dbContext.Activity.InsertActivity(new Activity
            {
                Action = action,
                User   = _user,
                Notes  = _data.Notes
            }, _caseID);

            if (_data.Attachments?.Any() ?? false)
            {
                foreach (var attachment in _data.Attachments)
                {
                    attachment.ID = await dbContext.Attachment.InsertAttachment(attachment);
                }

                await dbContext.Activity.MapActivityAttachments(
                    _activityID,
                    _data.Attachments.Select(e => e.ID).ToArray());
            }

            unitOfWork.Commit();

            return(_activityID);
        }
Exemple #3
0
        public Model.Case Map(Model.Case @case,
                              Offender offender           = null,
                              ContactInfo offenderContact = null,
                              Officer managedBy           = null,
                              Officer assignedTo          = null,
                              Person reportedBy           = null,
                              ContactInfo reporterContact = null,
                              Master breachCategories     = null,
                              Master offences             = null,
                              Attachment attachment       = null,
                              Certificate certificate     = null,
                              Premise premise             = null,
                              SanctionInfo sanctionInfo   = null)
        {
            if (!dict.TryGetValue(@case.ID, out Model.Case result))
            {
                dict[@case.ID] = @case;

                _contactInfoCache.Clear();
                _breachCategoriesCache.Clear();
                _offencesCache.Clear();
                _attachmentCache.Clear();
                _certificatesCache.Clear();
                _premiseCache.Clear();
                _sanctionInfoCache.Clear();
                _activityCache.Clear();
                _offenderContactInfoCache.Clear();

                if (!string.IsNullOrEmpty(offender?.Name))
                {
                    @case.Offender = offender;
                }

                if (!string.IsNullOrEmpty(managedBy?.Name))
                {
                    @case.ManagedBy = managedBy;
                }

                if (!string.IsNullOrEmpty(assignedTo?.Name))
                {
                    @case.AssignedTo = assignedTo;
                }

                if (!string.IsNullOrEmpty(reportedBy?.Name))
                {
                    @case.ReportedBy = reportedBy;
                }
                result = @case;
            }

            if ((reporterContact?.ID ?? 0) > 0 &&
                !_contactInfoCache.ContainsKey(reporterContact.ID))
            {
                _contactInfoCache[reporterContact.ID] = reporterContact;

                if (result.ReportedBy.ContactInfos == null)
                {
                    result.ReportedBy.ContactInfos = new List <ContactInfo>();
                }
                result.ReportedBy.ContactInfos.Add(reporterContact);
            }

            if ((offenderContact?.ID ?? 0) > 0 &&
                !_offenderContactInfoCache.ContainsKey(offenderContact.ID))
            {
                _offenderContactInfoCache[offenderContact.ID] = offenderContact;

                if (result.Offender.ContactInfos == null)
                {
                    result.Offender.ContactInfos = new List <ContactInfo>();
                }
                result.Offender.ContactInfos.Add(offenderContact);
            }

            if ((breachCategories?.ID ?? Guid.Empty) != Guid.Empty &&
                !_breachCategoriesCache.ContainsKey(breachCategories.ID))
            {
                _breachCategoriesCache[breachCategories.ID] = breachCategories;

                if (result.BreachCategories == null)
                {
                    result.BreachCategories = new List <Master>();
                }
                result.BreachCategories.Add(breachCategories);
            }

            if ((offences?.ID ?? Guid.Empty) != Guid.Empty &&
                !_offencesCache.ContainsKey(offences.ID))
            {
                _offencesCache[offences.ID] = offences;

                if (result.Offences == null)
                {
                    result.Offences = new List <Master>();
                }
                result.Offences.Add(offences);
            }

            if ((attachment?.ID ?? 0) > 0 &&
                !_attachmentCache.ContainsKey(attachment.ID))
            {
                _attachmentCache[attachment.ID] = attachment;

                if (result.Attachments == null)
                {
                    result.Attachments = new List <Attachment>();
                }
                result.Attachments.Add(attachment);
            }

            if ((certificate?.ID ?? 0) > 0 &&
                !_certificatesCache.ContainsKey(certificate.ID))
            {
                _certificatesCache[certificate.ID] = certificate;

                if (result.Certificates == null)
                {
                    result.Certificates = new List <Certificate>();
                }
                result.Certificates.Add(certificate);
            }

            if ((premise?.ID ?? 0) > 0 &&
                !_premiseCache.ContainsKey(premise.ID))
            {
                _premiseCache[premise.ID] = premise;

                if (result.Premises == null)
                {
                    result.Premises = new List <Premise>();
                }
                result.Premises.Add(premise);
            }

            if ((sanctionInfo?.ID ?? 0) > 0 &&
                !_sanctionInfoCache.ContainsKey(sanctionInfo.ID))
            {
                _sanctionInfoCache[sanctionInfo.ID] = sanctionInfo;

                if (result.SanctionInfos == null)
                {
                    result.SanctionInfos = new List <SanctionInfo>();
                }
                result.SanctionInfos.Add(sanctionInfo);
            }

            return(result);
        }