Exemplo n.º 1
0
        /// <summary>
        /// Removes the message from the queue.
        /// Remove operation will be canceled If force is false and message is not sent.
        /// If silent is false, MessageRemoved method of delivery handler is called
        /// </summary>
        public async Task <bool> RemoveMessage(QueueMessage message, bool force = false, bool silent = false)
        {
            if (!force && !message.IsSent)
            {
                return(false);
            }

            await _listSync.WaitAsync();

            try
            {
                if (message.Message.HighPriority)
                {
                    HighPriorityLinkedList.Remove(message);
                }
                else
                {
                    RegularLinkedList.Remove(message);
                }
            }
            finally
            {
                _listSync.Release();
            }

            if (!silent)
            {
                Info.AddMessageRemove();
                await DeliveryHandler.MessageRemoved(this, message);
            }

            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Saves message
        /// </summary>
        public async Task <bool> SaveMessage(QueueMessage message)
        {
            try
            {
                if (message.IsSaved)
                {
                    return(false);
                }

                if (IsInitialized)
                {
                    message.IsSaved = await DeliveryHandler.SaveMessage(this, message);
                }

                if (message.IsSaved)
                {
                    Info.AddMessageSave();
                }
            }
            catch (Exception e)
            {
                Server.SendError("SAVE_MESSAGE", e, $"QueueName:{Name}, MessageId:{message.Message.MessageId}");
            }

            return(message.IsSaved);
        }
Exemplo n.º 3
0
 public VerifiableProducer(VerifiableProducerConfig clientConfig)
 {
     Config          = clientConfig;
     Handle          = new Producer <Null, string>(Config.Conf, new NullSerializer(), new StringSerializer(Encoding.UTF8));
     ProduceLock     = new object();
     deliveryHandler = new DeliveryHandler(this);
     Dbg("Created producer " + Handle.Name);
 }
 private PurchaseManagement(PaymentHandler paymentHandler, DeliveryHandler deliveryHandler)
 {
     ClearAll();
     this.storeManagment  = StoreManagment.Instance;
     this.paymentHandler  = paymentHandler;
     this.deliveryHandler = deliveryHandler;
     this.userManager     = UserManager.Instance;
 }
Exemplo n.º 5
0
        /// <summary>
        /// Start to process all pending messages.
        /// This method is called after a client is subscribed to the queue.
        /// </summary>
        private async Task ProcessPendingMessages(bool high)
        {
            while (State.TriggerSupported)
            {
                QueueMessage message;

                if (high)
                {
                    lock (HighPriorityLinkedList)
                    {
                        if (HighPriorityLinkedList.Count == 0)
                        {
                            return;
                        }

                        message = HighPriorityLinkedList.First.Value;
                        HighPriorityLinkedList.RemoveFirst();
                        message.IsInQueue = false;
                    }
                }
                else
                {
                    lock (RegularLinkedList)
                    {
                        if (RegularLinkedList.Count == 0)
                        {
                            return;
                        }

                        message = RegularLinkedList.First.Value;
                        RegularLinkedList.RemoveFirst();
                        message.IsInQueue = false;
                    }
                }

                try
                {
                    PushResult pr = await State.Push(message);

                    if (pr == PushResult.Empty || pr == PushResult.NoConsumers)
                    {
                        return;
                    }
                }
                catch (Exception ex)
                {
                    Info.AddError();
                    try
                    {
                        Decision decision = await DeliveryHandler.ExceptionThrown(this, message, ex);
                        await ApplyDecision(decision, message);
                    }
                    catch //if developer does wrong operation, we should not stop
                    {
                    }
                }
            }
        }
Exemplo n.º 6
0
        public void StartHandler(Handlers Handler, out IBotHandler HandlerOut, params object[] Params)
        {
            HandlerOut = null;

            #region Null checks
            if (this == null)
            {
                return;
            }
            if (this.DRoomUser == null)
            {
                return;
            }

            Room Room = this.DRoom;

            if (Room == null)
            {
                return;
            }
            #endregion

            if (this.ActiveHandlers.ContainsKey(Handler))
            {
                IBotHandler I;
                this.ActiveHandlers.TryRemove(Handler, out I);
            }


            switch (Handler)
            {
            case Handlers.TELEPORT:
                HandlerOut       = new TeleportHandler(this, (Item)Params[0]);
                this.Teleporting = true;
                break;

            case Handlers.ATTACK:
                HandlerOut     = new AttackHandler(this, (GameClient)Params[0]);
                this.Attacking = true;
                break;

            case Handlers.DELIVERY:
                HandlerOut = new DeliveryHandler(this);
                break;

            case Handlers.FOODSERVE:
                HandlerOut = new FoodServeHandler(this, (GameClient)Params[0], (Food.Food)Params[1], (Point)Params[2], (Point)Params[3]);
                break;

            default:

                break;
            }

            this.ActiveHandlers.TryAdd(Handler, HandlerOut);
        }
        public void Add_DeliveryNull_ThrowsException()
        {
            // Arrange
            DeliveryHandler deliveryHandler = new DeliveryHandler();
            Delivery        delivery        = null;

            // Act
            // Assert
            Assert.ThrowsException <ArgumentNullException>(() => deliveryHandler.Add(delivery));
        }
        public void Update_DeliveryNull_ThrowsException()
        {
            // Arrange
            DeliveryHandler deliveryHandler = new DeliveryHandler();
            Delivery        delivery        = null;

            // Act
            // Assert
            Assert.ThrowsException <TargetException>(() => deliveryHandler.Update(delivery));
        }
 /// <summary>
 /// Setup the dependencies of this class for tests purposes
 /// </summary>
 public void SetupDependencies(
     StoreManagment storeManagment,
     PaymentHandler paymentHandler,
     DeliveryHandler deliveryHandler,
     UserManager userManager)
 {
     this.storeManagment  = storeManagment;
     this.userManager     = userManager;
     this.paymentHandler  = paymentHandler;
     this.deliveryHandler = deliveryHandler;
 }
Exemplo n.º 10
0
        public KafkaProducer(KafkaSetting kafkaSetting, Action <Message> receiveMessageAction = null)
        {
            if (receiveMessageAction != null)
            {
                deliveryHandler = new DeliveryHandler(receiveMessageAction);
            }
            var settings = kafkaSetting.ToDictionary();

            disableDeliveryReports = kafkaSetting.DisableDeliveryReports;
            producer = new Producer(settings, false, disableDeliveryReports);
        }
Exemplo n.º 11
0
 public static void Main(string[] args)
 {
     if (args.Any() && args[0] == "1")
     {
         DeliveryHandler.Start();
     }
     else
     {
         DeliveryHandler.StartAsync();
     }
 }
Exemplo n.º 12
0
        /// <function cref ="eCommerce_14a.DeliveryHandler.checkconnection()
        /// <function cref ="eCommerce_14a.PaymentHandler.checkconnection()
        public void ConnectToHandlers()
        {
            DeliveryHandler dh = DeliveryHandler.Instance;
            PaymentHandler  ph = PaymentHandler.Instance;

            dh.setConnection(false);
            ph.setConnections(false);
            Assert.IsFalse(dh.checkconnection());
            Assert.IsFalse(dh.checkconnection());
            dh.setConnection(true);
            ph.setConnections(true);
            Assert.IsTrue(dh.checkconnection());
            Assert.IsTrue(dh.checkconnection());
        }
Exemplo n.º 13
0
        /// <summary>
        /// Applies decision.
        /// If save is chosen, saves the message.
        /// If acknowledge is chosen, sends an ack message to source.
        /// Returns true is allowed
        /// </summary>
        internal async Task <bool> ApplyDecision(Decision decision, QueueMessage message, HorseMessage customAck = null)
        {
            try
            {
                if (decision.SaveMessage)
                {
                    await SaveMessage(message);
                }

                if (!message.IsProducerAckSent && (decision.Acknowledge == DeliveryAcknowledgeDecision.Always ||
                                                   decision.Acknowledge == DeliveryAcknowledgeDecision.Negative ||
                                                   decision.Acknowledge == DeliveryAcknowledgeDecision.IfSaved && message.IsSaved))
                {
                    HorseMessage acknowledge = customAck ?? message.Message.CreateAcknowledge(decision.Acknowledge == DeliveryAcknowledgeDecision.Negative ? "none" : null);

                    if (message.Source != null && message.Source.IsConnected)
                    {
                        bool sent = await message.Source.SendAsync(acknowledge);

                        message.IsProducerAckSent = sent;
                        if (decision.AcknowledgeDelivery != null)
                        {
                            await decision.AcknowledgeDelivery(message, message.Source, sent);
                        }
                    }
                    else if (decision.AcknowledgeDelivery != null)
                    {
                        await decision.AcknowledgeDelivery(message, message.Source, false);
                    }
                }

                if (decision.PutBack != PutBackDecision.No)
                {
                    ApplyPutBack(decision, message);
                }
                else if (!decision.Allow)
                {
                    Info.AddMessageRemove();
                    _ = DeliveryHandler.MessageDequeued(this, message);
                }
            }
            catch (Exception e)
            {
                Server.SendError("APPLY_DECISION", e, $"QueueName:{Name}, MessageId:{message.Message.MessageId}");
            }

            return(decision.Allow);
        }
        public virtual async Task UpsertDocument <TDocument>(IUpsertDocumentContext <TDocument> context) where TDocument : class
        {
            var topicName       = context.Document.GetType().Name;
            var config          = this._producerConfigManager.GetConfiguration(x => (x.ConfigurationScope & ConfigurationScope.Producer) == ConfigurationScope.Producer);
            var valueSerialiser = new BinarySerializer <TDocument>();
            var keySerialiser   = new BinarySerializer <Guid>();
            var deliveryHandler = new DeliveryHandler <Guid, TDocument>();

            using (var producer = new Producer <Guid, TDocument>(config, keySerialiser, valueSerialiser))
            {
                var deliveryReport = await producer.ProduceAsync(topicName, context.Id, context.Document);

                //producer.ProduceAsync(topicName, null, context.Document, deliveryHandler);
                //producer.Flush();
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// Saves message
        /// </summary>
        public async Task <bool> SaveMessage(QueueMessage message)
        {
            if (message.IsSaved)
            {
                return(false);
            }

            message.IsSaved = await DeliveryHandler.SaveMessage(this, message);

            if (message.IsSaved)
            {
                Info.AddMessageSave();
            }

            return(message.IsSaved);
        }
        public void Delete_DeliveryExists_ReturnTrue()
        {
            // Arrange
            DeliveryProvider deliveryProvider = new DeliveryProvider();
            var             allDeliverys      = deliveryProvider.GetAll().OrderByDescending(p => p.Id);
            Delivery        lastDelivery      = allDeliverys.FirstOrDefault() ?? new Delivery();
            DeliveryHandler deliveryHandler   = new DeliveryHandler();

            // Act
            bool result          = deliveryHandler.Delete(lastDelivery.Id);
            var  deletedDelivery = deliveryProvider.GetById(lastDelivery.Id);

            // Assert
            Assert.IsTrue(result);
            Assert.IsNull(deletedDelivery);
        }
Exemplo n.º 17
0
        public static void Produce(string broker, string topicName, long numMessages)
        {
            var deliveryHandler = new DeliveryHandler();

            using (var producer = new Producer(broker))
                using (Topic topic = producer.Topic(topicName))
                {
                    Console.WriteLine($"{producer.Name} producing on {topic.Name}");
                    for (int i = 0; i < numMessages; i++)
                    {
                        byte[] data = Encoding.UTF8.GetBytes(i.ToString());
                        topic.Produce(data, deliveryHandler);
                    }

                    Console.WriteLine("Shutting down");
                }
        }
        public void Add_DeliveryCorrectEntity_ReturnId()
        {
            // Arrange
            DeliveryProvider deliveryProvider = new DeliveryProvider();
            var      allDeliverys             = deliveryProvider.GetAll().OrderByDescending(p => p.Id);
            Delivery lastDelivery             = allDeliverys.FirstOrDefault() ?? new Delivery();

            DeliveryHandler deliveryHandler = new DeliveryHandler();
            Delivery        delivery        = new Delivery();

            delivery.Name  = "Name";
            delivery.Price = 123.45m;
            // Act
            int id = deliveryHandler.Add(delivery);

            // Assert
            Assert.IsTrue(lastDelivery.Id < id);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["id"] != null)
        {
            int id = Convert.ToInt16(Request.QueryString["id"]);
            idnum.Value = Request.QueryString["id"].ToString();
            DeliveryHandler dhandler = new DeliveryHandler();
            string          dt       = dhandler.finDecotingBarbyId(id);


            DecoctingBar.Value = dt;
        }
        if (!IsPostBack)
        {
            DeliveryHandler dhandler = new DeliveryHandler();
            SqlDataReader   sdr      = dhandler.findNameAll();


            if (sdr != null)
            {
                while (sdr.Read())
                {
                    this.Sendper.Items.Add(new ListItem(sdr["EmNumAName"].ToString()));
                    // this.SwapPer.Items.Add(new ListItem(sdr["JobNum"].ToString()));
                }
            }
            DataBaseLayer db = new DataBaseLayer();
            if (Session["userNamebar"] != null)
            {
                string name = Session["userNamebar"].ToString();

                string        sq1 = "select EmNumAName from Employee where jobnum ='" + name + "' ";
                SqlDataReader sr  = db.get_Reader(sq1);
                if (sr.Read())
                {
                    Sendper.Value = sr["EmNumAName"].ToString();
                }
            }
            else
            {
                Response.Write("<script>alert('用户名已失效');window.parent.loginview();</script>");
            }
        }
    }
Exemplo n.º 20
0
        public async Task <IActionResult> MakeNewActor(NewActorModel model)
        {
            var data = await _getUserInfo();

            if (string.IsNullOrWhiteSpace(model.Username))
            {
                return(View("NewActor", model));
            }
            var user = model.Username;

            var obj = new ASObject();

            obj["type"].Add(new ASTerm("Person"));
            obj["preferredUsername"].Add(new ASTerm(user));
            obj["name"].Add(new ASTerm(string.IsNullOrWhiteSpace(model.Name) ? "Unnamed" : model.Name));
            if (!string.IsNullOrWhiteSpace(model.Summary))
            {
                obj["summary"].Add(new ASTerm(model.Summary));
            }

            var create = new ASObject();

            create["type"].Add(new ASTerm("Create"));
            create["object"].Add(new ASTerm(obj));
            create["to"].Add(new ASTerm("https://www.w3.org/ns/activitystreams#Public"));

            var stagingStore = new StagingEntityStore(_entityStore);
            var apo          = await _flattener.FlattenAndStore(stagingStore, create);

            var handler = new CreateActorHandler(stagingStore, apo, null, null, User, _collectionTools, _entityData, _context);
            await handler.Handle();

            var resultUser = await _entityStore.GetEntity((string)handler.MainObject.Data["object"].First().Primitive, false);

            var outbox = await _entityStore.GetEntity((string)resultUser.Data["outbox"].First().Primitive, false);

            var delivery = new DeliveryHandler(stagingStore, handler.MainObject, resultUser, outbox, User, _collectionTools, _provider.GetRequiredService <DeliveryService>());
            await delivery.Handle();

            return(RedirectToAction("Edit", new { id = resultUser.Id }));
        }
        public void Update_DeliveryCorrectEntity_ReturnTrueAndNewEntityHasCorrectSetFields()
        {
            // Arrange
            DeliveryProvider deliveryProvider = new DeliveryProvider();
            var oldDeliverys = deliveryProvider.GetById(1);

            DeliveryHandler deliveryHandler = new DeliveryHandler();
            Delivery        delivery        = new Delivery();

            delivery.Id    = 1;
            delivery.Name  = "NEW_Name";
            delivery.Price = 999.99m;
            // Act
            bool result       = deliveryHandler.Update(delivery);
            var  newDeliverys = deliveryProvider.GetById(1);

            // Assert
            Assert.IsTrue(result);
            Assert.AreEqual("NEW_Name", newDeliverys.Name);
            Assert.AreEqual(999.99m, newDeliverys.Price);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Applies decision.
        /// If save is chosen, saves the message.
        /// If acknowledge is chosen, sends an ack message to source.
        /// Returns true is allowed
        /// </summary>
        internal async Task <bool> ApplyDecision(Decision decision, QueueMessage message, TmqMessage customAck = null)
        {
            if (decision.SaveMessage)
            {
                await SaveMessage(message);
            }

            if (decision.SendAcknowledge == DeliveryAcknowledgeDecision.Always ||
                decision.SendAcknowledge == DeliveryAcknowledgeDecision.IfSaved && message.IsSaved)
            {
                TmqMessage acknowledge = customAck ?? message.Message.CreateAcknowledge();
                if (message.Source != null && message.Source.IsConnected)
                {
                    bool sent = await message.Source.SendAsync(acknowledge);

                    if (decision.AcknowledgeDelivery != null)
                    {
                        await decision.AcknowledgeDelivery(message, message.Source, sent);
                    }
                }
                else if (decision.AcknowledgeDelivery != null)
                {
                    await decision.AcknowledgeDelivery(message, message.Source, false);
                }
            }

            if (decision.KeepMessage)
            {
                AddMessage(message, false);
            }

            else if (!decision.Allow)
            {
                Info.AddMessageRemove();
                _ = DeliveryHandler.MessageRemoved(this, message);
            }

            return(decision.Allow);
        }
    public static string addDeliveryinfo(string id, string DecoctingBar, string Sendpersonnel, string Remarks, string dtbtype, string logisticsnum)
    {
        string result = "";

        System.DateTime now = new System.DateTime();
        now = System.DateTime.Now;
        string          SendTime = now.ToString();
        DeliveryHandler dhandler = new DeliveryHandler();
        string          DeNum    = DecoctingBar.Substring(4, 10);
        int             sdr      = dhandler.AddDelivery(id, Convert.ToInt32(DeNum), Sendpersonnel, SendTime, Remarks, dtbtype, logisticsnum);

        if (sdr == 0)
        {
            result = "0";
        }
        else
        {
            result = "1";
        }

        return(result);
    }
Exemplo n.º 24
0
        /// <summary>
        /// Called when a acknowledge message is received from the client
        /// </summary>
        internal async Task AcknowledgeDelivered(MqClient from, TmqMessage deliveryMessage)
        {
            MessageDelivery delivery = TimeKeeper.FindAndRemoveDelivery(from, deliveryMessage.MessageId);

            //when server and consumer are in pc,
            //sometimes consumer sends ack before server start to follow ack of the message
            //that happens when ack message is arrived in less than 0.01ms
            //in that situation, server can't find the delivery with FindAndRemoveDelivery, it returns null
            //so we need to check it again after a few milliseconds
            if (delivery == null)
            {
                await Task.Delay(1);

                delivery = TimeKeeper.FindAndRemoveDelivery(from, deliveryMessage.MessageId);

                //try again
                if (delivery == null)
                {
                    await Task.Delay(3);

                    delivery = TimeKeeper.FindAndRemoveDelivery(from, deliveryMessage.MessageId);
                }
            }

            bool success = true;

            if (deliveryMessage.Length > 0 && deliveryMessage.Content != null)
            {
                string msg = deliveryMessage.Content.ToString();
                if (msg.Equals("FAILED", StringComparison.InvariantCultureIgnoreCase) || msg.Equals("TIMEOUT", StringComparison.InvariantCultureIgnoreCase))
                {
                    success = false;
                }
            }

            if (delivery != null)
            {
                delivery.MarkAsAcknowledged(success);
            }

            if (success)
            {
                Info.AddAcknowledge();
            }
            else
            {
                Info.AddUnacknowledge();
            }

            Decision decision = await DeliveryHandler.AcknowledgeReceived(this, deliveryMessage, delivery, success);

            if (delivery != null)
            {
                if (Options.HideClientNames)
                {
                    deliveryMessage.SetSource(null);
                }

                await ApplyDecision(decision, delivery.Message, deliveryMessage);
            }

            ReleaseAcknowledgeLock(true);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Start to process all pending messages.
        /// This method is called after a client is subscribed to the queue.
        /// </summary>
        private async Task ProcessPendingMessages(bool high)
        {
            while (State.TriggerSupported)
            {
                if (_clients.Count == 0)
                {
                    return;
                }

                QueueMessage message;

                if (high)
                {
                    lock (PriorityMessagesList)
                    {
                        if (PriorityMessagesList.Count == 0)
                        {
                            return;
                        }

                        message = PriorityMessagesList.First?.Value;
                        if (message == null)
                        {
                            return;
                        }

                        PriorityMessagesList.RemoveFirst();
                        message.IsInQueue = false;
                    }
                }
                else
                {
                    lock (MessagesList)
                    {
                        if (MessagesList.Count == 0)
                        {
                            return;
                        }

                        message = MessagesList.First?.Value;
                        if (message == null)
                        {
                            return;
                        }

                        MessagesList.RemoveFirst();
                        message.IsInQueue = false;
                    }
                }

                try
                {
                    PushResult pr = await State.Push(message);

                    if (pr == PushResult.NoConsumers || pr == PushResult.Empty)
                    {
                        return;
                    }
                }
                catch (Exception ex)
                {
                    Server.SendError("PROCESS_MESSAGES", ex, $"QueueName:{Name}");
                    Info.AddError();
                    try
                    {
                        Decision decision = await DeliveryHandler.ExceptionThrown(this, message, ex);
                        await ApplyDecision(decision, message);
                    }
                    catch //if developer does wrong operation, we should not stop
                    {
                    }
                }

                if (Options.DelayBetweenMessages > 0)
                {
                    await Task.Delay(Options.DelayBetweenMessages);
                }
            }
        }
Exemplo n.º 26
0
    protected void Page_Load(object sender, EventArgs e)
    {
        String type = Request.QueryString["type"].ToString();

        if ("save".Equals(type))
        {
            try
            {
                string imgbase64 = Request.Form["imgbase64"]; //图片
                string tisaneNum = Request.Form["tisaneNum"]; //煎药单号
                string userNum   = Request.Form["userNum"];   //员工号
                string barcode   = Request.Form["barcode"];   //条形码
                string userName  = Request.Form["userName"];  //员工姓名
                string imgname   = null;
                string nowDate   = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                if (imgbase64 != null && imgbase64.Trim().Length > 0)
                {
                    imgbase64 = imgbase64.Replace(' ', '+');
                    Byte[] bimg = Convert.FromBase64String(imgbase64);
                    //D:\\项目\\煎药厂\\src\\web\\upload\\

                    String path = System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "upload\\";
                    imgname = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";
                    FileBinaryConvertHelper.Bytes2File(bimg, path + imgname);
                }
                DeliveryHandler dh     = new DeliveryHandler();
                RecipeModel     rm     = new RecipeModel();
                DataTable       dtable = rm.findPackingFinish(Convert.ToInt32(tisaneNum));
                int             result = 0;
                if (dtable.Rows.Count > 0)
                {
                    DataTable dtables = rm.findDeliveryFinish(Convert.ToInt32(tisaneNum));
                    if (dtables.Rows.Count > 0)
                    {
                        //  result = dh.AddDelivery(Convert.ToInt32(userNum), nowDate, barcode, tisaneNum, imgname, userName);
                        result = dh.AddDelivery(Convert.ToInt32(userNum), nowDate, barcode, tisaneNum, imgname, userName);
                    }
                    else
                    {
                        result = 0;
                    }
                }

                if (result > 0)
                {
                    Response.Write("{\"code\":\"0\",\"msg\":\"操作成功\"}");
                }
                else
                {
                    Response.Write("{\"code\":\"1\",\"msg\":\"操作失败\"}");
                }
            }
            catch (Exception e1)
            {
                Response.Write("{\"code\":\"1\",\"msg\":\"操作失败\"}");
            }
        }
        else if ("get".Equals(type))
        {
            String      id  = Request.QueryString["id"].ToString();
            RecipeModel rm2 = new RecipeModel();

            string        warningid = rm2.getRetentionWarning(6);
            DeliveryModel rm        = new DeliveryModel();

            DataTable dataTable = rm.findDeliveryInfo(Convert.ToInt32(id), DateTime.Now.ToString("yyyy-MM-dd"));
            Response.Write("{\"code\":\"0\",\"msg\":\"操作成功\",\"data\":" + DataTableToJson.ToJson(dataTable) + ",\"warning\":\"" + warningid + "\"}");
        }
    }
Exemplo n.º 27
0
        /// <summary>
        /// Pushes a message into the queue.
        /// </summary>
        internal async Task <PushResult> Push(QueueMessage message, MqClient sender)
        {
            if (Status == QueueStatus.Stopped)
            {
                return(PushResult.StatusNotSupported);
            }

            if (Options.MessageLimit > 0 && HighPriorityLinkedList.Count + RegularLinkedList.Count >= Options.MessageLimit)
            {
                return(PushResult.LimitExceeded);
            }

            if (Options.MessageSizeLimit > 0 && message.Message.Length > Options.MessageSizeLimit)
            {
                return(PushResult.LimitExceeded);
            }

            //prepare properties
            message.Message.FirstAcquirer       = true;
            message.Message.AcknowledgeRequired = Options.RequestAcknowledge;

            //if message doesn't have message id and "UseMessageId" option is enabled, create new message id for the message
            if (Options.UseMessageId && string.IsNullOrEmpty(message.Message.MessageId))
            {
                message.Message.SetMessageId(Channel.Server.MessageIdGenerator.Create());
            }

            //if we have an option maximum wait duration for message, set it after message joined to the queue.
            //time keeper will check this value and if message time is up, it will remove message from the queue.
            if (Options.MessageTimeout > TimeSpan.Zero)
            {
                message.Deadline = DateTime.UtcNow.Add(Options.MessageTimeout);
            }

            if (Options.HideClientNames)
            {
                message.Message.SetSource(null);
            }

            try
            {
                //fire message receive event
                Info.AddMessageReceive();
                Decision decision = await DeliveryHandler.ReceivedFromProducer(this, message, sender);

                message.Decision = decision;

                bool allow = await ApplyDecision(decision, message);

                if (!allow)
                {
                    return(PushResult.Success);
                }

                if (State.CanEnqueue(message))
                {
                    await RunInListSync(() => AddMessage(message));

                    if (State.TriggerSupported && !_triggering)
                    {
                        _ = Trigger();
                    }
                }
                else
                {
                    _ = State.Push(message);
                }

                return(PushResult.Success);
            }
            catch (Exception ex)
            {
                Info.AddError();
                try
                {
                    Decision decision = await DeliveryHandler.ExceptionThrown(this, State.ProcessingMessage, ex);

                    if (State.ProcessingMessage != null)
                    {
                        await ApplyDecision(decision, State.ProcessingMessage);

                        if (decision.KeepMessage && !State.ProcessingMessage.IsInQueue)
                        {
                            AddMessage(State.ProcessingMessage, false);
                        }
                    }
                }
                catch //if developer does wrong operation, we should not stop
                {
                }
            }

            return(PushResult.Success);
        }
Exemplo n.º 28
0
        public async Task <IActionResult> DoRegister(RegisterViewModel model)
        {
            if (!_configuration.GetSection("Kroeg").GetValue <bool>("CanRegister"))
            {
                return(NotFound());
            }
            var apuser = new APUser
            {
                Username = model.Username,
                Email    = model.Email
            };

            if ((await _relevantEntities.FindEntitiesWithPreferredUsername(model.Username)).Count > 0)
            {
                ModelState.AddModelError("", "Username is already in use!");
            }

            if (model.Password != model.VerifyPassword)
            {
                ModelState.AddModelError("", "Passwords don't match!");
            }

            if (!ModelState.IsValid)
            {
                return(View("Register", model));
            }

            await _connection.OpenAsync();

            using (var trans = _connection.BeginTransaction())
            {
                var result = await _userManager.CreateAsync(apuser, model.Password);

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", result.Errors.First().Description);
                }

                if (!ModelState.IsValid)
                {
                    return(View("Register", model));
                }

                if (await _connection.ExecuteAsync("select count(*) from \"Users\"") == 1)
                {
//                    await _userManager.AddClaimAsync(apuser, new Claim("admin", "true"));
                }

                await _signInManager.SignInAsync(apuser, false);

                var user = model.Username;

                var obj = new ASObject();
                obj.Type.Add("https://www.w3.org/ns/activitystreams#Person");
                obj["preferredUsername"].Add(ASTerm.MakePrimitive(user));
                obj["name"].Add(ASTerm.MakePrimitive(user));

                var create = new ASObject();
                create.Type.Add("https://www.w3.org/ns/activitystreams#Create");
                create["object"].Add(ASTerm.MakeSubObject(obj));
                create["to"].Add(ASTerm.MakeId("https://www.w3.org/ns/activitystreams#Public"));

                Console.WriteLine($"--- creating actor. Unflattened:\n{create.Serialize().ToString(Formatting.Indented)}");
                var apo = await _entityFlattener.FlattenAndStore(_entityStore, create);

                Console.WriteLine($"Flat: {apo.Data.Serialize().ToString(Formatting.Indented)}\n----");
                var handler = new CreateActorHandler(_entityStore, apo, null, null, User, _collectionTools, _entityConfiguration, _connection);
                handler.UserOverride = apuser.Id;
                await handler.Handle();

                var resultUser = await _entityStore.GetEntity(handler.MainObject.Data["object"].First().Id, false);

                var outbox = await _entityStore.GetEntity(resultUser.Data["outbox"].First().Id, false);

                var delivery = new DeliveryHandler(_entityStore, handler.MainObject, resultUser, outbox, User, _collectionTools, _provider.GetRequiredService <DeliveryService>());
                await delivery.Handle();

                trans.Commit();
                return(RedirectToActionPermanent("Index", "Settings"));
            }
        }
Exemplo n.º 29
0
        public ActionResult _Remove(int Id)
        {
            ProductViewModel helperModel = new ProductViewModel();
            IEnumerable<Book> ifBooks = (IEnumerable<Book>)Session["myBooks"];
            IEnumerable<Technology> ifGadget = (IEnumerable<Technology>)Session["myGadget"];
            List<CartItem> myItems = (List<CartItem>)Session["myItems"];
            CartItem thishereItem = new CartItem();
            try
            {
                thishereItem = myItems.Single(kill => kill.CartItemID == Id);
                int pId = thishereItem.ProductID;
                ProductViewModel.CartHelper cartHelp;
                List<ProductViewModel.CartHelper> itemList = new List<ProductViewModel.CartHelper>();
                myItems.Remove(thishereItem);
                if (myItems.Count == 0)
                { return RedirectToAction("Edit"); }
                double cartTotal = 0;

                #region Calculate Total Per Item
                if (myItems != null)
                {
                    if (ifBooks != null)
                    {
                        var revised = from rev in ifBooks
                                      join item in myItems on rev.ProductID equals item.ProductID
                                      where rev.ProductID == item.ProductID
                                      select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                        foreach (var ite in revised)
                        {
                            cartHelp = new ProductViewModel.CartHelper();
                            cartHelp.ProductID = ite.ProductID;
                            cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                            cartTotal += (ite.SellingPrice * ite.Quantity);
                            itemList.Add(cartHelp);
                        }
                    }
                    if (ifGadget != null)
                    {
                        var revised = from rev in ifGadget
                                      join item in myItems on rev.ProductID equals item.ProductID
                                      where rev.ProductID == item.ProductID
                                      select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                        foreach (var ite in revised)
                        {
                            cartHelp = new ProductViewModel.CartHelper();
                            cartHelp.ProductID = ite.ProductID;
                            cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                            cartTotal += (ite.SellingPrice * ite.Quantity);
                            itemList.Add(cartHelp);
                        }
                    }
                }
                #endregion

                #region Totalling
                List<Company> company = new List<Company>(); BusinessLogicHandler myHandler = new BusinessLogicHandler();
                company = myHandler.GetCompanyDetails();
                double vat = 0;
                foreach (var item in company)
                { vat = item.VATPercentage; }
                double vatAmount = (cartTotal * vat);
                double subTotal = (cartTotal - vatAmount);
                ProductViewModel.CartConclude finishing = new ProductViewModel.CartConclude();
                finishing.CartTotal = cartTotal;
                finishing.VatAddedTotal = vatAmount;
                finishing.SubTotal = subTotal;
                #endregion

                #region Feeding the model
                helperModel.ItsA_wrap = new List<ProductViewModel.CartConclude>();
                helperModel.ItsA_wrap.Add(finishing);

                helperModel.secureCart = itemList;
                helperModel.allBook = new List<Book>();
                helperModel.allBook = ifBooks.ToList();
                helperModel.allCartItem = new List<CartItem>();
                helperModel.allCartItem = myItems;
                helperModel.allTechnology = new List<Technology>();
                helperModel.allTechnology = ifGadget.ToList();
                #endregion

                #region Drop down data
                DeliveryHandler deliver = new DeliveryHandler();
                IEnumerable<Delivery> delivery = (IEnumerable<Delivery>)deliver.GetDeliveryList();
                var dataStore = from name in delivery
                                select new { Value = name.DeliveryServiceID, Text = name.ServiceName };
                ViewBag.DeliveryList = new SelectList(dataStore.ToList());

                List<SelectListItem> deliveryI = new List<SelectListItem>();
                deliveryI.Add(new SelectListItem { Text = "Delivery Service", Value = "", Selected = true });
                foreach (var item in delivery)
                { deliveryI.Add(new SelectListItem { Text = item.ServiceName, Value = item.DeliveryServiceID.ToString() }); }
                helperModel.I_DeliveryList = new List<SelectListItem>();
                helperModel.I_DeliveryList = deliveryI;
                ViewData["I_Delivery"] = deliveryI;
                #endregion

                return View("Checkout", helperModel);
            }
            catch
            { return RedirectToAction("Edit"); }
        }
Exemplo n.º 30
0
        public ActionResult Checkout(FormCollection collection, ProductViewModel model)
        {
            Delivery shipping = new Delivery();
            IEnumerable<Book> ifBooks = (IEnumerable<Book>)Session["myBooks"];
            IEnumerable<Technology> ifGadget = (IEnumerable<Technology>)Session["myGadget"];
            List<CartItem> myItems = (List<CartItem>)Session["myItems"];
            myHandler = new BusinessLogicHandler();

            #region Get Shipping Data
            try
            {
                shipping = myHandler.GetDeliveryDetails(Convert.ToInt32(collection[1].ToString()));

                if (ModelState.ContainsKey("I_DeliveryList"))
                    ModelState["I_DeliveryList"].Errors.Clear();
            }
            catch
            { ModelState.AddModelError("deliveryHelper.DeliveryServicePrice", "Please select a delivery service from dropdown !"); }
            #endregion

            #region Cathing model errors
            var error = ModelState.Values.SelectMany(e => e.Errors);
            var errors = ModelState
    .Where(x => x.Value.Errors.Count > 0)
    .Select(x => new { x.Key, x.Value.Errors })
    .ToArray();
            #endregion

            int? IID = 0;
            if (ModelState.IsValid)
            {
                #region Get User
                string userName = User.Identity.GetUserName();
                ApplicationDbContext dataSocket = new ApplicationDbContext();
                UserStore<ApplicationUser> myStore = new UserStore<ApplicationUser>(dataSocket);
                userMgr = new ApplicationUserManager(myStore);
                var user = userMgr.FindByEmail(userName);
                #endregion

                try
                {
                    #region Creating the reciept/invoice
                    Invoice reciept = new Invoice { User_Id = user.Id, DateCreated = DateTime.Now, DeliveryAddress = model.deliveryHelper.DeliveryAddress, DeliveryServiceID = Convert.ToInt32(collection[1].ToString()), Status = false };
                    try
                    {
                        InvoiceItem invoiceLine = new InvoiceItem();
                        invoiceLine = myHandler.GetInvoiceLastNumber(reciept);
                        foreach (var item in myItems)
                        {
                            invoiceLine.CartItemID = item.CartItemID;
                            invoiceLine.ProductID = item.ProductID;
                            invoiceLine.Quantity = item.Quantity;

                            #region Get Product Price
                            bool chk = false;
                            chk = myHandler.CheckProductType(item.ProductID);
                            if (chk)
                            {
                                Book book = new Book();
                                book = myHandler.GetBook(item.ProductID);
                                invoiceLine.Price = book.SellingPrice;
                                myHandler.AddinvoiceItem(invoiceLine);
                            }
                            else
                            {
                                Technology device = new Technology();
                                device = myHandler.GetTechnologyDetails(item.ProductID);
                                invoiceLine.Price = device.SellingPrice;
                                myHandler.AddinvoiceItem(invoiceLine);
                            }
                            #endregion


                        }
                        IID = invoiceLine.InvoiceID;

                    }
                    catch { }
                    #endregion


                    #region Placing the order
                    try
                    {

                        #region Prep Utilities

                        Order ord;
                        Book book = new Book();
                        Technology gadget = new Technology();
                        int supplierId = 0;
                        OrderItem orderLine = new OrderItem();
                        myHandler = new BusinessLogicHandler();
                        List<int> orders = new List<int>();
                        List<int> suppliers = new List<int>();

                        #endregion

                        foreach (var item in myItems)
                        {
                            if (myHandler.CheckProductType(item.ProductID))
                            {
                                book = myHandler.GetBook(item.ProductID);
                                supplierId = book.SupplierID;
                                if (suppliers.Contains(book.SupplierID))
                                {
                                    int x = suppliers.IndexOf(supplierId);
                                    orderLine.OrderNo = orders.ElementAt(x);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }
                                else
                                {
                                    suppliers.Add(supplierId);
                                    ord = new Order { DateCreated = DateTime.Now.Date, SupplierID = supplierId, InvoiceID = IID.GetValueOrDefault(), DateLastModified = DateTime.Now.Date, Status = false };
                                    orderLine = myHandler.AddOrder(ord);
                                    orders.Add(orderLine.OrderNo);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }

                            }
                            else
                            {
                                supplierId = ifGadget.SingleOrDefault(m => m.ProductID == item.ProductID).SupplierID;
                                if (suppliers.Contains(supplierId))
                                {
                                    int y = suppliers.IndexOf(supplierId);
                                    orderLine.OrderNo = orders.ElementAt(y);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }
                                else
                                {
                                    suppliers.Add(supplierId);
                                    ord = new Order { DateCreated = DateTime.Now.Date, SupplierID = supplierId, InvoiceID = IID.GetValueOrDefault(), DateLastModified = DateTime.Now.Date, Status = false };
                                    orderLine = myHandler.AddOrder(ord);
                                    orders.Add(orderLine.OrderNo);
                                    orderLine.ProductID = item.ProductID;
                                    orderLine.Quantity = item.Quantity;
                                    myHandler.AddOrderItem(orderLine);
                                }
                            }
                        }
                    }
                    catch { }
                    #endregion
                }
                catch
                {/*Navigate to custom error page*/ }
                Session["deliverData"] = model;
                return RedirectToAction("Receipt", new { IID = IID });
            }
            else
            {
                #region Feed The Model


                CartItem thishereItem = new CartItem();
                try
                {
                    ProductViewModel.CartHelper cartHelp;
                    List<ProductViewModel.CartHelper> itemList = new List<ProductViewModel.CartHelper>();
                    double cartTotal = 0;
                    if (myItems != null)
                    {
                        if (ifBooks != null)
                        {
                            var revised = from rev in ifBooks
                                          join item in myItems on rev.ProductID equals item.ProductID
                                          where rev.ProductID == item.ProductID
                                          select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                            foreach (var ite in revised)
                            {
                                cartHelp = new ProductViewModel.CartHelper();
                                cartHelp.ProductID = ite.ProductID;
                                cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                                cartTotal += (ite.SellingPrice * ite.Quantity);
                                itemList.Add(cartHelp);
                            }
                        }
                        if (ifGadget != null)
                        {
                            var revised = from rev in ifGadget
                                          join item in myItems on rev.ProductID equals item.ProductID
                                          where rev.ProductID == item.ProductID
                                          select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                            foreach (var ite in revised)
                            {
                                cartHelp = new ProductViewModel.CartHelper();
                                cartHelp.ProductID = ite.ProductID;
                                cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                                cartTotal += (ite.SellingPrice * ite.Quantity);
                                itemList.Add(cartHelp);
                            }
                        }
                    }
                    List<Company> company = new List<Company>(); myHandler = new BusinessLogicHandler();
                    company = myHandler.GetCompanyDetails();
                    double vat = 0;
                    foreach (var item in company)
                    { vat = item.VATPercentage; }
                    //calc
                    double vatAmount = (cartTotal * vat);
                    double subTotal = (cartTotal - vatAmount);
                    ProductViewModel.CartConclude finishing = new ProductViewModel.CartConclude();
                    finishing.CartTotal = cartTotal;
                    finishing.VatAddedTotal = vatAmount;
                    finishing.SubTotal = subTotal;
                    model.ItsA_wrap = new List<ProductViewModel.CartConclude>();
                    model.ItsA_wrap.Add(finishing);

                    model.deliveryHelper.DeliveryServiceName = shipping.ServiceName;
                    model.deliveryHelper.DeliveryServicePrice = shipping.Price;
                    model.deliveryHelper.DeliveryServiceType = shipping.ServiceType;

                    model.secureCart = itemList;
                    model.allBook = new List<Book>();
                    model.allBook = ifBooks.ToList() ;
                    model.allCartItem = new List<CartItem>();
                    model.allCartItem = myItems;
                    model.allTechnology = new List<Technology>();
                    model.allTechnology = ifGadget.ToList();
                }
                catch { }
                #endregion

                #region Drop down data
                DeliveryHandler deliver = new DeliveryHandler();
                IEnumerable<Delivery> delivery = (IEnumerable<Delivery>)deliver.GetDeliveryList();
                var dataStore = from name in delivery
                                select new { Value = name.DeliveryServiceID, Text = name.ServiceName };
                ViewBag.DeliveryList = new SelectList(dataStore.ToList());

                List<SelectListItem> deliveryI = new List<SelectListItem>();
                deliveryI.Add(new SelectListItem { Text = "Delivery Service", Value = "", Selected = true });
                foreach (var item in delivery)
                { deliveryI.Add(new SelectListItem { Text = item.ServiceName, Value = item.DeliveryServiceID.ToString() }); }
                model.I_DeliveryList = new List<SelectListItem>();
                model.I_DeliveryList = deliveryI;
                ViewData["I_Delivery"] = deliveryI;
                #endregion

                return View(model);
            }
        }
Exemplo n.º 31
0
        /// <summary>
        /// Pushes a message into the queue.
        /// </summary>
        internal async Task <PushResult> Push(QueueMessage message, MqClient sender)
        {
            if (!IsInitialized)
            {
                try
                {
                    UpdateOptionsByMessage(message.Message);
                    DeliveryHandlerBuilder handlerBuilder = new DeliveryHandlerBuilder
                    {
                        Server  = Server,
                        Queue   = this,
                        Headers = message.Message.Headers,
                        DeliveryHandlerHeader = message.Message.FindHeader(HorseHeaders.DELIVERY_HANDLER)
                    };

                    IMessageDeliveryHandler deliveryHandler = await Server.DeliveryHandlerFactory(handlerBuilder);

                    InitializeQueue(deliveryHandler);

                    handlerBuilder.TriggerAfterCompleted();
                }
                catch (Exception e)
                {
                    Server.SendError("INITIALIZE_IN_PUSH", e, $"QueueName:{Name}");
                    throw;
                }
            }

            if (Status == QueueStatus.Stopped)
            {
                return(PushResult.StatusNotSupported);
            }

            if (Options.MessageLimit > 0 && PriorityMessagesList.Count + MessagesList.Count >= Options.MessageLimit)
            {
                return(PushResult.LimitExceeded);
            }

            if (Options.MessageSizeLimit > 0 && message.Message.Length > Options.MessageSizeLimit)
            {
                return(PushResult.LimitExceeded);
            }

            //remove operational headers that are should not be sent to consumers or saved to disk
            message.Message.RemoveHeaders(HorseHeaders.DELAY_BETWEEN_MESSAGES,
                                          HorseHeaders.ACKNOWLEDGE,
                                          HorseHeaders.QUEUE_NAME,
                                          HorseHeaders.QUEUE_STATUS,
                                          HorseHeaders.QUEUE_TOPIC,
                                          HorseHeaders.PUT_BACK_DELAY,
                                          HorseHeaders.DELIVERY,
                                          HorseHeaders.DELIVERY_HANDLER,
                                          HorseHeaders.CC);

            //prepare properties
            message.Message.WaitResponse = Options.Acknowledge != QueueAckDecision.None;

            //if message doesn't have message id and "UseMessageId" option is enabled, create new message id for the message
            if (Options.UseMessageId && string.IsNullOrEmpty(message.Message.MessageId))
            {
                message.Message.SetMessageId(Server.MessageIdGenerator.Create());
            }

            //if we have an option maximum wait duration for message, set it after message joined to the queue.
            //time keeper will check this value and if message time is up, it will remove message from the queue.
            if (Options.MessageTimeout > TimeSpan.Zero)
            {
                message.Deadline = DateTime.UtcNow.Add(Options.MessageTimeout);
            }

            if (Options.HideClientNames)
            {
                message.Message.SetSource(null);
            }

            try
            {
                //fire message receive event
                Info.AddMessageReceive();
                Decision decision = await DeliveryHandler.ReceivedFromProducer(this, message, sender);

                message.Decision = decision;

                bool allow = await ApplyDecision(decision, message);

                if (!allow)
                {
                    return(PushResult.Success);
                }

                //trigger message produced event
                OnMessageProduced.Trigger(message);

                if (State.CanEnqueue(message))
                {
                    await RunInListSync(() => AddMessage(message));

                    if (State.TriggerSupported && !_triggering)
                    {
                        _ = Trigger();
                    }
                }
                else
                {
                    _ = State.Push(message);
                }

                return(PushResult.Success);
            }
            catch (Exception ex)
            {
                Server.SendError("PUSH", ex, $"QueueName:{Name}");
                Info.AddError();
                try
                {
                    Decision decision = await DeliveryHandler.ExceptionThrown(this, State.ProcessingMessage, ex);

                    if (State.ProcessingMessage != null)
                    {
                        await ApplyDecision(decision, State.ProcessingMessage);

                        if (!State.ProcessingMessage.IsInQueue)
                        {
                            if (decision.PutBack == PutBackDecision.Start)
                            {
                                AddMessage(State.ProcessingMessage, false);
                            }
                            else if (decision.PutBack == PutBackDecision.End)
                            {
                                AddMessage(State.ProcessingMessage);
                            }
                        }
                    }
                }
                catch //if developer does wrong operation, we should not stop
                {
                }
            }

            return(PushResult.Success);
        }
Exemplo n.º 32
0
        public async Task<ActionResult> Checkout()
        {

            #region Data to Display
            CartActions act = new CartActions(); WishlistActions wishAct = new WishlistActions();
            ApplicationDbContext dataSocket = new ApplicationDbContext();
            UserStore<ApplicationUser> myStore = new UserStore<ApplicationUser>(dataSocket);
            userMgr = new ApplicationUserManager(myStore);
            var thisUser = await userMgr.FindByNameAsync(User.Identity.Name);
            int Id = (int)thisUser.Carts.CartID;


            try
            { double nm = await GetCartTotal(Id); string[] xn = nm.ToString().Split('.'); Session["cartTotal"] = xn[0] + "," + xn[1]; }
            catch { Session["cartTotal"] = act.GetTotalAsync(Id); }


            Session["wishlistTotal"] = wishAct.GetWishlistTotal(thisUser.Wishlists.WishlistID);
            //List<CartItem> myItems = new List<CartItem>(); 
            ProductViewModel myNewModel = new ProductViewModel();
            IEnumerable<CartItem> myItems = act.GetCartItemsAsync(Id);
            if (myItems != null)
            {
                myHandler = new BusinessLogicHandler();
                List<Book> ifBooks = new List<Book>();
                List<Technology> ifGadget = new List<Technology>();

                foreach (var item in myItems)
                {
                    if (myHandler.CheckProductType(item.ProductID))
                    {
                        Book book = new Book();
                        book = myHandler.GetBook(item.ProductID);
                        ifBooks.Add(book);
                    }
                    else
                    {
                        Technology device = new Technology();
                        device = myHandler.GetTechnologyDetails(item.ProductID);
                        ifGadget.Add(device);
                    }
                }

                myNewModel.allBook = ifBooks;
                myNewModel.allCartItem = myItems.ToList();
                myNewModel.allTechnology = ifGadget;
                List<ProductViewModel.CartHelper> itemList = new List<ProductViewModel.CartHelper>();
                ProductViewModel.CartHelper cartHelp;
                if (myItems != null)
                {
                    var revised = from rev in ifBooks
                                  join item in myItems on rev.ProductID equals item.ProductID
                                  where rev.ProductID == item.ProductID
                                  select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                    foreach (var ite in revised)
                    {
                        cartHelp = new ProductViewModel.CartHelper();
                        cartHelp.ProductID = ite.ProductID;
                        cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                        itemList.Add(cartHelp);
                    }
                }
                if (myItems != null)
                {
                    if (ifGadget != null)
                    {
                        var revised = from rev in ifGadget
                                      join item in myItems on rev.ProductID equals item.ProductID
                                      where rev.ProductID == item.ProductID
                                      select new { rev.ProductID, rev.SellingPrice, item.Quantity };
                        foreach (var ite in revised)
                        {
                            cartHelp = new ProductViewModel.CartHelper();
                            cartHelp.ProductID = ite.ProductID;
                            cartHelp.TotalPerItem = (ite.SellingPrice * ite.Quantity);
                            itemList.Add(cartHelp);
                        }
                    }
                }
                double cartTotal = Convert.ToDouble(Session["cartTotal"].ToString());
                cartTotal = cartTotal / 100;
                List<Company> company = myHandler.GetCompanyDetails();
                double vat = 0;
                foreach (var item in company)
                { vat = item.VATPercentage; }
                vat = vat + 1;
                double subTotal = cartTotal / vat;
                double vatAmount = cartTotal - subTotal;
                ProductViewModel.CartConclude finishing = new ProductViewModel.CartConclude();
                finishing.CartTotal = cartTotal;
                finishing.VatAddedTotal = vatAmount;
                finishing.SubTotal = subTotal;
                myNewModel.ItsA_wrap = new List<ProductViewModel.CartConclude>();
                myNewModel.ItsA_wrap.Add(finishing);

                myNewModel.secureCart = itemList;
            }
            else
            { return RedirectToAction("Edit"); }

            #endregion

            #region Drop down data
            DeliveryHandler deliver = new DeliveryHandler();
            IEnumerable<Delivery> delivery = (IEnumerable<Delivery>)deliver.GetDeliveryList();
            var dataStore = from name in delivery
                            select new { Value = name.DeliveryServiceID, Text = name.ServiceName };
            ViewBag.DeliveryList = new SelectList(dataStore.ToList());

            List<SelectListItem> deliveryI = new List<SelectListItem>();
            deliveryI.Add(new SelectListItem { Text = "Delivery Service", Value = "", Selected = true });
            foreach (var item in delivery)
            { deliveryI.Add(new SelectListItem { Text = item.ServiceName, Value = item.DeliveryServiceID.ToString() }); }
            myNewModel.I_DeliveryList = new List<SelectListItem>();
            myNewModel.I_DeliveryList = deliveryI;
            ViewData["I_Delivery"] = deliveryI;
            #endregion

            #region Default Address
            if (thisUser.Address != null)
            { myNewModel.deliveryHelper = new DeliveryHelper(); myNewModel.deliveryHelper.DeliveryAddress = thisUser.Address; }
            #endregion

            return View(myNewModel);
        }
Exemplo n.º 33
0
        /// <summary>
        /// Called when a acknowledge message is received from the client
        /// </summary>
        internal async Task AcknowledgeDelivered(MqClient from, HorseMessage deliveryMessage)
        {
            try
            {
                if (!IsInitialized)
                {
                    return;
                }

                MessageDelivery delivery = TimeKeeper.FindAndRemoveDelivery(from, deliveryMessage.MessageId);

                //when server and consumer are in pc,
                //sometimes consumer sends ack before server start to follow ack of the message
                //that happens when ack message is arrived in less than 0.01ms
                //in that situation, server can't find the delivery with FindAndRemoveDelivery, it returns null
                //so we need to check it again after a few milliseconds
                if (delivery == null)
                {
                    await Task.Delay(1);

                    delivery = TimeKeeper.FindAndRemoveDelivery(from, deliveryMessage.MessageId);

                    //try again
                    if (delivery == null)
                    {
                        await Task.Delay(3);

                        delivery = TimeKeeper.FindAndRemoveDelivery(from, deliveryMessage.MessageId);
                    }
                }

                bool success = !(deliveryMessage.HasHeader &&
                                 deliveryMessage.Headers.Any(x => x.Key.Equals(HorseHeaders.NEGATIVE_ACKNOWLEDGE_REASON, StringComparison.InvariantCultureIgnoreCase)));

                // ReSharper disable once ConditionIsAlwaysTrueOrFalse (it's possible, resharper doesn't work properly in here)
                if (delivery != null)
                {
                    if (delivery.Receiver != null && delivery.Message == delivery.Receiver.CurrentlyProcessing)
                    {
                        delivery.Receiver.CurrentlyProcessing = null;
                    }

                    delivery.MarkAsAcknowledged(success);
                }

                if (success)
                {
                    Info.AddAcknowledge();
                }
                else
                {
                    Info.AddNegativeAcknowledge();
                }

                Decision decision = await DeliveryHandler.AcknowledgeReceived(this, deliveryMessage, delivery, success);

                // ReSharper disable once ConditionIsAlwaysTrueOrFalse (it's possible, resharper doesn't work properly in here)
                if (delivery != null)
                {
                    if (Options.HideClientNames)
                    {
                        deliveryMessage.SetSource(null);
                    }

                    await ApplyDecision(decision, delivery.Message, deliveryMessage);
                }

                ReleaseAcknowledgeLock(true);
            }
            catch (Exception e)
            {
                Server.SendError("QUEUE_ACK_RECEIVED", e, $"QueueName:{Name}, MessageId:{deliveryMessage.MessageId}");
            }
        }