private void CreateAndSendDelivery()
{
if (PluginContext.Operations.GetHostDeliverySettings().DeliveryPaymentTimeOption == DeliveryPaymentTimeOption.BeforeSending)
return;
var credentials = PluginContext.Operations.AuthenticateByPin(pin);
var delivery = CreateDelivery(false);
if (PluginContext.Operations.IsDeliveryConfirmationActive())
{
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.Unconfirmed);
PluginContext.Operations.ChangeDeliveryConfirmTime(DateTime.Now, delivery, credentials);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
}
PluginContext.Operations.PrintOrderItems(credentials, delivery, delivery.Items.OfType<IOrderCookingItem>().ToList());
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.New);
PluginContext.Operations.PrepareDeliveryForSending(credentials, delivery);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.Waiting);
var courier = PluginContext.Operations.GetUsers().Single(x => x.Name == courierName);
Debug.Assert(delivery.Courier == null);
PluginContext.Operations.ChangeDeliveryCourier(true, delivery, courier, credentials);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(Equals(delivery.Courier, courier));
Debug.Assert(!delivery.IsPrintedBillActual);
PluginContext.Operations.PrintDeliveryBill(credentials, delivery);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(delivery.IsPrintedBillActual);
PluginContext.Operations.SendDelivery(credentials, delivery);
delivery = PluginContext.Operations.GetDeliveryOrderById(delivery.Id);
Debug.Assert(delivery.DeliveryStatus == DeliveryStatus.OnWay);
}