Esempio n. 1
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            // Look up cost center
            CostCenterInfo costCenterInfo = await _apiClient.GetCostCenterInfoAsync(Expense.SubmitterEmail);

            Expense.CostCenter    = costCenterInfo.CostCenter;
            Expense.ApproverEmail = costCenterInfo.ApproverEmail;

            // Write to DB, but don't wait right now
            _context.Expense.Add(Expense);
            Task t = _context.SaveChangesAsync();

            // Serialize the expense and write it to the Azure Storage Queue
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_queueInfo.ConnectionString);
            CloudQueueClient    queueClient    = storageAccount.CreateCloudQueueClient();
            CloudQueue          queue          = queueClient.GetQueueReference(_queueInfo.QueueName);
            await queue.CreateIfNotExistsAsync();

            CloudQueueMessage queueMessage = new CloudQueueMessage(JsonConvert.SerializeObject(Expense));
            await queue.AddMessageAsync(queueMessage);

            // Ensure the DB write is complete
            t.Wait();

            return(RedirectToPage("./Index"));
        }
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='submitterEmail'>
 /// </param>
 public static CostCenterInfo GetCostCenterInfo(this IContosoExpensesAPI operations, string submitterEmail)
 {
     return(operations.GetCostCenterInfoAsync(submitterEmail).GetAwaiter().GetResult());
 }