Пример #1
0
        public async Task <DeliveryCompleted> ProcessSingleFile(FileDelivered filedeliveredcommand)
        {
            SingleFile singlefile = new SingleFile(filedeliveredcommand.DeliveryId)
            {
                Customer = filedeliveredcommand.Customer,
                FileName = filedeliveredcommand.FileName,
                Flow     = filedeliveredcommand.Flow,
            };


            await PreProcessFile(singlefile);
            await ProcessFile(singlefile);
            await PostProcessFile(singlefile);

            //Guid headerid = Guid.NewGuid();

            //create header
            //await _service.AddHeader(singlefile.DeliveryId, singlefile.Flow);
            //save files recursief



            //recursief opslaan


            //beastanden verwijderen

            //ophalen vervolgacties???


            //notificeren

            return(new DeliveryCompleted(Guid.NewGuid(), singlefile.DeliveryId.ToString(), singlefile.Customer, singlefile.Flow, ""));
        }
        public DateTime?GetDisplayRequestTime()
        {
            if (SendDate != null && (FileDelivered.GetValueOrDefault() || DocumentDelivered.GetValueOrDefault()))
            {
                return(SendDate);
            }
            if (DocumentProcessedSuccessfully())
            {
                return(RequestTime);
            }

            return(null);
        }
Пример #3
0
        private async Task HandleAsync(RealtimeTriggered realtimetriggered)
        {
            //ophalen alles bestanden die voldoen aan de trigger
            //bestanden verplaatsten naar inprocess map (in mapje met id).
            //dan de volgende queue aanroepen voor de echte verwerking
            var files = Directory.GetFiles(realtimetriggered.Folder, realtimetriggered.Filter);

            foreach (var file in files)
            {
                //kijken of file gelocked is, zo ja dan overslaan
                File.Move(file, Path.Combine(Path.GetDirectoryName(file), "InProcess", Path.GetFileName(file)));
                FileDelivered e = new FileDelivered(realtimetriggered.MessageId, Guid.NewGuid(), Path.Combine(Path.GetDirectoryName(file), "InProcess", Path.GetFileName(file)), realtimetriggered.Flow, realtimetriggered.Customer);
                await _messagePublisher.PublishMessageAsync(e.MessageType, e, "");
            }
            //await Task.Delay(2000);
        }
Пример #4
0
        private async Task HandleAsync(FileDelivered fileDelivered)
        {
            DeliveryCompleted e = await _service.ProcessSingleFile(fileDelivered);

            //await _messagePublisher.PublishMessageAsync(e.MessageType, e, "DataService", null);
            //await _messagePublisher.PublishMessageAsync(e.MessageType, e, "notification", null);

            //var jobs = await _repo.GetMaintenanceJobsToBeInvoicedAsync();
            //foreach (var jobsPerCustomer in jobs.GroupBy(job => job.CustomerId))
            //{
            //    DateTime invoiceDate = DateTime.Now;
            //    string customerId = jobsPerCustomer.Key;
            //    Customer customer = await _repo.GetCustomerAsync(customerId);
            //    Invoice invoice = new Invoice
            //    {
            //        InvoiceId = $"{invoiceDate.ToString("yyyyMMddhhmmss")}-{customerId.Substring(0, 4)}",
            //        InvoiceDate = invoiceDate.Date,
            //        CustomerId = customer.CustomerId,
            //        JobIds = string.Join('|', jobsPerCustomer.Select(j => j.JobId))
            //    };

            //    StringBuilder specification = new StringBuilder();
            //    decimal totalAmount = 0;
            //    foreach (var job in jobsPerCustomer)
            //    {
            //        TimeSpan duration = job.EndTime.Value.Subtract(job.StartTime.Value);
            //        decimal amount = Math.Round((decimal)duration.TotalHours * HOURLY_RATE, 2);
            //        totalAmount += amount;
            //        specification.AppendLine($"{job.EndTime.Value.ToString("dd-MM-yyyy")} : {job.Description} on vehicle with license {job.LicenseNumber} - Duration: {duration.TotalHours} hour - Amount: &euro; {amount}");
            //    }
            //    invoice.Specification = specification.ToString();
            //    invoice.Amount = totalAmount;

            //    await SendInvoice(customer, invoice);
            //    await _repo.RegisterInvoiceAsync(invoice);

            //    Log.Information("Invoice {Id} sent to {Customer}", invoice.InvoiceId, customer.Name);
            //}
        }