Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Consume(ConsumeContext <IAddStaffInCharge> context)
        {
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .WriteTo.Console(theme: ConsoleTheme.None)
                         .CreateLogger();
            var start = Stopwatch.GetTimestamp();

            Log.Information("Received command {CommandName}-{MessageId}: {@Messages}", GetType().Name, context.MessageId, context.Message);
            var leads = await _leadRepository.AddStaffInCharge(context.Message);

            foreach (var lead in leads)
            {
                await context.Publish <ICreateActivityHistoryLead>(
                    new
                {
                    lead.CompanyId,
                    LeadId    = lead.Id,
                    Type      = "edit",
                    Activity  = "updateLead",
                    CreatedBy = lead.UpdatedBy,
                    CreatedAt = lead.UpdatedAt
                }
                    );

                await context.Publish <ICreateActivityHistoryLead>(
                    new
                {
                    lead.CompanyId,
                    LeadId   = lead.Id,
                    Type     = "assignment",
                    Activity = lead.StaffInCharge,
                    lead.CreatedBy,
                    lead.CreatedAt
                });
            }
            await context.RespondAsync <IStaffInChargeAdded>(new { Ids = leads.Select(s => s.Id) });

            if (leads.Count > 0)
            {
                //index to es
                var response = await _esClient.IndexManyAsync(leads, "leads");

                await context.Publish <ISendMail>(
                    new
                {
                    TypeNotification = TypeNotification.AssignmentLead,
                    Data             = new DataSendMail()
                    {
                        Body = new
                        {
                            context.Message.CompanyId,
                            Leads = leads,
                            context.Message.StaffInCharge,
                            context.Message.CcMail
                        }
                    }
                });
            }
            Log.Information("Completed command {CommandName}-{MessageId} {ExecuteTime}ms", GetType().Name, context.MessageId, (Stopwatch.GetTimestamp() - start) * 1000 / (double)Stopwatch.Frequency);
        }