Exemple #1
0
        public async Task ChangeDeliveryState([FromBody] DeliveryStateChangeModel dto)
        {
            var delivery = await context.Delivery
                           .Include(d => d.RecipientTokens)
                           .ThenInclude(dt => dt.Token)
                           .FirstOrDefaultAsync(d => d.Id == dto.DeliveryId);

            if (delivery == null)
            {
                return;
            }

            delivery.State = dto.NewState;

            await context.SaveChangesAsync();

            await firebase.SendMultiCastNotification(
                delivery.RecipientTokens.Select(t => t.Token.Token),
                new Dictionary <string, string>
            {
                { "MessageType", nameof(ChangeDeliveryState) },
                { nameof(DeliveryModel.PackageId), delivery.PackageId },
                { nameof(DeliveryModel.State), delivery.State.ToString() }
            });
        }
        public async Task DoorBell([FromBody] DoorBellModel dto)
        {
            var delivery = await context.Delivery
                           .Include(d => d.RecipientTokens)
                           .ThenInclude(dt => dt.Token)
                           .FirstOrDefaultAsync(d => d.PackageId == dto.PackageId);

            if (delivery == null)
            {
                return;
            }

            var token = await context.FcmToken.FirstOrDefaultAsync(t => t.Token == dto.ResponseFirebaseToken)
                        ?? new FcmToken
            {
                Token  = dto.ResponseFirebaseToken,
                UserId = await currentUser.CurrentUserId()
            };

            delivery.CourierToken = token;
            await context.SaveChangesAsync();

            await firebase.SendMultiCastNotification(
                delivery.RecipientTokens.Select(t => t.Token.Token),
                new Dictionary <string, string>
            {
                { "MessageType", nameof(DoorBell) },
                { nameof(DoorBellModel.PackageId), dto.PackageId }
            });
        }