예제 #1
0
        public override async Task <DeviceActivationCommandResponse> ExecuteAsync()
        {
            var device = await _database.FirstOrDefault(x => x.RegistrationCode.Equals(RegistrationCode.ToUpper()));

            if (device == null)
            {
                return(new DeviceActivationCommandResponse(ActivationStatus.NotFound));
            }

            if (device.ActivatedOn.HasValue)
            {
                return(new DeviceActivationCommandResponse(ActivationStatus.NotFound));
            }

            device.ActivatedOn = DateTime.UtcNow;
            device.TeamId      = TeamId;
            device.TeamDomain  = TeamDomain;
            device.ChannelId   = ChannelId;
            device.ChannelName = ChannelName;
            device.UserName    = UserName;
            device.UserId      = UserId;

            await _database.UpdateItemAsync(device);

            return(new DeviceActivationCommandResponse(ActivationStatus.Success));
        }
예제 #2
0
            public async Task <Unit> Handle(Request request, CancellationToken cancellationToken)
            {
                var orderRequest = await _orderRepository.GetItemAsync(request.Id);

                orderRequest.Reject();

                await _orderRepository.UpdateItemAsync(orderRequest);

                return(Unit.Value);
            }
예제 #3
0
        public async Task <ActionResult> EditAsync([Bind(Include = "Id,Name,Description,Completed")] Item item)
        {
            if (ModelState.IsValid)
            {
                await db.UpdateItemAsync(item.Id, item);

                return(RedirectToAction("Index"));
            }

            return(View(item));
        }
예제 #4
0
        private async Task <bool> ToggleBotInChannel(IActivity activity, bool enabled, CancellationToken cancellationToken)
        {
            // First, check if the user sending the request is a Team Administrator.
            if (activity.From.Role == "bot")
            {
                return(false);
            }
            // THIS IS NOT THE BEST. I KNOW. I can't figure out how to get the list of admins for a channel.
            // (The Teams Bot documentation sucks for advanced users.)
            // Only let me and TechOps toggle the bot on and off.
            if (activity.From.Name.Contains("TechOps") || activity.From.Name.Contains("Aaron Rosenberger"))
            {
                string channelId = (string)activity.ChannelData["teamsChannelId"];
                string teamId;

                try
                {
                    teamId = (string)activity.ChannelData["teamsTeamId"];
                }
                catch (Exception)
                {
                    Trace.TraceError("Could not get team id.");
                    teamId = "defaultpartition";
                }

                _isEnabled = enabled;
                TeamsChannelMetadataModel metadata = await _db.GetItemAsync(channelId, teamId, cancellationToken);

                bool existsInDb = metadata != null;
                if (!existsInDb)
                {
                    metadata = new TeamsChannelMetadataModel
                    {
                        Id     = channelId,
                        TeamId = teamId
                    };
                }

                metadata.IsEnabled = _isEnabled;

                if (existsInDb)
                {
                    await _db.UpdateItemAsync(metadata.Id, metadata, metadata.TeamId, cancellationToken);
                }
                else
                {
                    await _db.CreateItemAsync(metadata, metadata.TeamId, cancellationToken);
                }

                return(true);
            }

            return(false);
        }
        public async Task EditOrderDetail(OrderDTO orderDto)
        {
            Order orderEntity = new Order
            {
                Id         = orderDto.Id.ToString(),
                Created_At = orderDto.Created_At,
                //CustomerId = orderDto.OrderCustomer.Id,
                OrderCustomer = orderDto.OrderCustomer,
                OrdersDetails = orderDto.Details.Select(m => new OrderDetail {
                    Discount = m.Discount, OrderDetailId = m.Id, OrderId = m.OrderId, ProductId = m.ProductId, Quantity = m.Quantity
                }).ToArray(),
                ShipAdress     = orderDto.shipAdress,
                ShipCity       = orderDto.shipCity,
                ShipCountry    = orderDto.shipCountry,
                ShipPostalCode = orderDto.shipPostalCode,
                TotalAmount    = orderDto.TotalAmount
            };

            await repositoryOrders.UpdateItemAsync(orderEntity.Id, orderEntity);
        }
예제 #6
0
        /// <summary>
        /// Responds to a karma request. NOTE: Assumes <paramref name="karmaString"/> is a valid karma string.
        /// </summary>
        /// <param name="karmaString">A valid karma string.</param>
        /// <param name="uniqueId">If the entity given karma was a Teams user, the unique ID for that user</param>
        /// <param name="givenName">If the entity given karma was a Teams user, the Given Name for that user</param>
        /// <returns>The bot's response including the karma amount difference.</returns>
        public async Task <string> GetReplyMessageForKarma(string karmaString, string uniqueId, string givenName, CancellationToken cancellationToken)
        {
            // We don't want commonly used karma strings to be interpreted as karma, like "C++"
            if (KarmaBlacklist.Contains(karmaString.Replace(" ", "")))
            {
                return(null);
            }

            // Break down the karma string into parts
            Match karmaMatch = GetKarmaRegexMatch(karmaString);

            // Get the entity that was given karma
            string entityForMessaging = karmaMatch.Groups[1].Value;
            string uniqueEntity       = givenName ?? Regex.Replace(entityForMessaging, "<.*?>|@|\"|[\\s]", "").ToLower();

            // Delta: the karma in pluses or minuses.
            string delta = karmaMatch.Groups[2].Value;
            // The amount of karma to give or take away.
            int deltaLength = delta.Length - 1;

            if (delta.Contains("-"))
            {
                deltaLength *= -1;
            }

            string id        = uniqueId ?? uniqueEntity;
            string partition = GetPartitionForKey(karmaString);

            KarmaModel karmaItem = await _db.GetItemAsync(id, partition, cancellationToken);

            bool existsInDb = karmaItem != null;

            if (!existsInDb)
            {
                karmaItem = new KarmaModel
                {
                    Id        = id,
                    Entity    = uniqueEntity,
                    Partition = partition,
                    Score     = 0
                };
            }

            string replyMessage = string.Empty;

            if (deltaLength > 5)
            {
                // BUZZKILL MODE
                deltaLength   = 5;
                replyMessage += $"{Strings.BuzzkillMode} {Strings.BuzzkillModeMessage} ... ";
            }
            else if (deltaLength < -5)
            {
                deltaLength   = -5;
                replyMessage += $"{Strings.BuzzkillMode} {Strings.BuzzkillModeMessage} ... ";
            }

            string messageFormat;

            if (deltaLength > 0)
            {
                messageFormat = ReplyMessageIncreasedFormat;
            }
            else
            {
                messageFormat = ReplyMessageDecreasedFormat;
            }

            karmaItem.Score += deltaLength;
            replyMessage    += string.Format(messageFormat, entityForMessaging, karmaItem.Score);

            if (existsInDb)
            {
                await _db.UpdateItemAsync(id, karmaItem, partition, cancellationToken);
            }
            else
            {
                await _db.CreateItemAsync(karmaItem, partition, cancellationToken);
            }

            return(replyMessage);
        }