示例#1
0
        public ActionResult Create(EventLogEntryModel model)
        // public ActionResult Create(FormCollection collection)
        {
            try
            {
                EventLog log1 = new EventLog(logName);
                log1.Source = sourceName;

                EventLogEntryType entryType;
                if (model.Erreur)
                {
                    entryType = EventLogEntryType.Error;
                }
                else if (model.Avertissement)
                {
                    entryType = EventLogEntryType.Warning;
                }
                else
                {
                    entryType = EventLogEntryType.Information;
                }

                for (int i = 1; i < model.NbToCreate; i++)
                {
                    log1.WriteEntry(model.Message + " - " + i.ToString(), entryType, 100);
                }

                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
示例#2
0
        // GET: EventLog
        public ActionResult Index()
        {
            EventLog log = new EventLog(logName);

            log.Source = sourceName;

            if (log.Entries.Count != 0)
            {
                List <RQ_ASPNET_WebApplication_MVC.Models.EventLogEntryModel> model = new List <RQ_ASPNET_WebApplication_MVC.Models.EventLogEntryModel>();
                for (int i = log.Entries.Count - 1; i­­ > log.Entries.Count - 100; i--)
                {
                    EventLogEntryModel entry = new EventLogEntryModel(log.Entries[i]);
                    model.Add(entry);
                }
                return(View(model));
            }
            return(View());
        }
        public async Task <List <EventLogEntryModel> > GetEventLogForOrder(int orderId)
        {
            var order = await _dbContext.Orders.GetOrderForEventLog(orderId);

            if (order == null)
            {
                return(new List <EventLogEntryModel>());
            }
            var orderChangeLogEntries = await _dbContext.OrderChangeLogEntries.GetOrderChangeLogEntitesForOrderEventLog(orderId).ToListAsync();

            var orderStatusConfirmations = await _dbContext.OrderStatusConfirmation.GetStatusConfirmationsForOrderEventLog(orderId).ToListAsync();

            var customerName = order.CustomerOrganisation.Name;
            var eventLog     = new List <EventLogEntryModel>
            {
                // Order creation
                new EventLogEntryModel
                {
                    Timestamp        = order.CreatedAt,
                    EventDetails     = order.ReplacingOrder != null ? $"Ersättningsuppdrag skapat (ersätter {order.ReplacingOrder.OrderNumber})" : "Bokningsförfrågan skapad",
                    Actor            = order.CreatedByUser.FullName,
                    Organization     = customerName,
                    ActorContactInfo = GetContactinfo(order.CreatedByUser),
                }
            };

            // Add all request logs (including their requisition and complaint logs)'
            eventLog.AddRange(await GetEventLogForRequestsOnOrder(orderId, customerName, null));
            // Order replaced
            if (order.ReplacedByOrder != null)
            {
                eventLog.Add(new EventLogEntryModel
                {
                    Timestamp        = order.ReplacedByOrder.CreatedAt,
                    EventDetails     = $"Bokning ersatt av {order.ReplacedByOrder.OrderNumber}",
                    Actor            = order.ReplacedByOrder.CreatedByUser.FullName,
                    Organization     = customerName,
                    ActorContactInfo = GetContactinfo(order.ReplacedByOrder.CreatedByUser),
                });
            }
            // Change of contact person
            int i = 0;
            var orderContactPersons = orderChangeLogEntries.Where(oc => oc.OrderChangeLogType == OrderChangeLogType.ContactPerson);

            foreach (OrderChangeLogEntry oc in orderChangeLogEntries.Where(oc => oc.OrderChangeLogType == OrderChangeLogType.ContactPerson))
            {
                //if previous contact is null, a new contact person is added - get the new contact
                if (oc.OrderContactPersonHistory.PreviousContactPersonId == null)
                {
                    EventLogEntryModel eventRow = GetEventRowForNewContactPerson(oc, order, orderContactPersons, i + 1);
                    if (eventRow != null)
                    {
                        eventLog.Add(eventRow);
                    }
                }
                //if previous contact person is not null, then contact person is changed or just removed
                else
                {
                    //add a row for removed person
                    eventLog.Add(new EventLogEntryModel
                    {
                        Timestamp        = oc.LoggedAt,
                        EventDetails     = $"{oc.OrderContactPersonHistory.PreviousContactPersonUser?.FullName} fråntogs rätt att granska rekvisition",
                        Actor            = oc.UpdatedByUser.FullName,
                        Organization     = customerName,
                        ActorContactInfo = GetContactinfo(oc.UpdatedByUser),
                    });
                    //find if removed or changed (if removed we don't add a row else add row for new contact)
                    EventLogEntryModel eventRow = GetEventRowForNewContactPerson(oc, order, orderContactPersons, i + 1);
                    if (eventRow != null)
                    {
                        eventLog.Add(eventRow);
                    }
                }
                i++;
            }
            if (orderChangeLogEntries.Any(oc => oc.OrderChangeLogType != OrderChangeLogType.ContactPerson))
            {
                foreach (OrderChangeLogEntry oc in orderChangeLogEntries.Where(oc => oc.OrderChangeLogType != OrderChangeLogType.ContactPerson))
                {
                    eventLog.Add(new EventLogEntryModel
                    {
                        Timestamp        = oc.LoggedAt,
                        EventDetails     = oc.OrderChangeLogType.GetDescription() + " ändrade",
                        Actor            = oc.UpdatedByUser.FullName,
                        Organization     = customerName,
                        ActorContactInfo = GetContactinfo(oc.UpdatedByUser),
                    });
                    if (oc.OrderChangeConfirmation != null)
                    {
                        eventLog.Add(new EventLogEntryModel
                        {
                            Timestamp        = oc.OrderChangeConfirmation.ConfirmedAt,
                            EventDetails     = "Bokningsändring bekräftad",
                            Actor            = oc.OrderChangeConfirmation.ConfirmedByUser.FullName,
                            Organization     = oc.Broker.Name,
                            ActorContactInfo = GetContactinfo(oc.OrderChangeConfirmation.ConfirmedByUser)
                        });
                    }
                }
                eventLog = eventLog.Distinct(new EventLogEntryModel.EventLogEntryComparer()).ToList();
            }
            if (orderStatusConfirmations.Any(os => os.OrderStatus == OrderStatus.NoBrokerAcceptedOrder))
            {
                var c = orderStatusConfirmations.First(os => os.OrderStatus == OrderStatus.NoBrokerAcceptedOrder);
                eventLog.Add(new EventLogEntryModel
                {
                    Timestamp        = c.ConfirmedAt,
                    EventDetails     = $"Bekräftat bokningsförfrågan avslutad",
                    Actor            = c.ConfirmedByUser.FullName,
                    Organization     = customerName,
                    ActorContactInfo = GetContactinfo(c.ConfirmedByUser),
                });
            }

            if (order.Status == OrderStatus.ResponseNotAnsweredByCreator)
            {
                var req = await _dbContext.Requests.GetLastRequestForOrder(orderId);

                eventLog.Add(new EventLogEntryModel
                {
                    Timestamp    = req.LatestAnswerTimeForCustomer ?? order.StartAt,
                    EventDetails = "Obesvarad tillsättning, tiden gick ut, bokning avslutad",
                    Actor        = "Systemet",
                });
                // Check if confirmed
                if (orderStatusConfirmations.Any(os => os.OrderStatus == OrderStatus.ResponseNotAnsweredByCreator))
                {
                    OrderStatusConfirmation osc = orderStatusConfirmations.First(os => os.OrderStatus == OrderStatus.ResponseNotAnsweredByCreator);
                    eventLog.Add(new EventLogEntryModel
                    {
                        Timestamp        = osc.ConfirmedAt,
                        EventDetails     = $"Obesvarad tillsättning bekräftad av myndighet",
                        Actor            = osc.ConfirmedByUser?.FullName ?? "Systemet",
                        Organization     = customerName,
                        ActorContactInfo = GetContactinfo(osc.ConfirmedByUser),
                    });
                }
            }
            return(eventLog);
        }