Пример #1
0
        private static void HandleStorePurchaseError(BackendResult <StorePurchaseResult, ResultCode> result, Action callback = null)
        {
            ResultCode resultCode = result.ResultCode;

            switch (resultCode)
            {
            case ResultCode.Succeeded:
                if (result.ResultData != null && result.ResultData.state < 0)
                {
                    Execute.ExecuteOnUIThread((Action)(() => new GenericInfoUC(2000).ShowAndHideLater(result.ResultData.error_message ?? CommonResources.UnableToCompletePurchase, null)));
                    break;
                }
                break;

            case ResultCode.ValidationCancelledOrFailed:
                return;

            case ResultCode.ConfirmationCancelled:
                return;

            case ResultCode.BalanceRefillCancelled:
                return;

            default:
                GenericInfoUC.ShowBasedOnResult((int)resultCode, "", (VKRequestsDispatcher.Error)null);
                break;
            }
            if (callback == null)
            {
                return;
            }
            callback();
        }
Пример #2
0
 private void PurchaseVotesPackWithMobile(VotesPack votesPack, Action successCallback, Action <BackendResult <StorePurchaseResult, ResultCode> > errorCallback)
 {
     this.BuyVotes(new StoreBuyProductParams(StoreProductType.votes, votesPack.ProductId), (Action <BackendResult <StorePurchaseResult, ResultCode> >)(result =>
     {
         if (result.ResultCode == ResultCode.Succeeded)
         {
             Action action = successCallback;
             if (action == null)
             {
                 return;
             }
             action();
         }
         else
         {
             Action <BackendResult <StorePurchaseResult, ResultCode> > action = errorCallback;
             if (action == null)
             {
                 return;
             }
             BackendResult <StorePurchaseResult, ResultCode> backendResult = result;
             action(backendResult);
         }
     }));
 }
Пример #3
0
        private void PurchaseVotesPackWithInApps(VotesPack votesPack, Action successCallback, Action <BackendResult <StorePurchaseResult, ResultCode> > errorCallback, Action cancelledCallback)
        {
            InAppPurchaseService.RequestProductPurchase(votesPack.MerchantProductId, (Action <InAppProductPurchaseResult>)(purchaseResult =>
            {
                switch (purchaseResult.Status)
                {
                case InAppProductPurchaseStatus.Cancelled:
                    Action action1 = cancelledCallback;
                    if (action1 == null)
                    {
                        break;
                    }
                    action1();
                    break;

                case InAppProductPurchaseStatus.Purchased:
                    this.FulfillPurchases(votesPack.MerchantProductId, successCallback, errorCallback);
                    break;

                case InAppProductPurchaseStatus.Error:
                    Action <BackendResult <StorePurchaseResult, ResultCode> > action2 = errorCallback;
                    if (action2 == null)
                    {
                        break;
                    }
                    BackendResult <StorePurchaseResult, ResultCode> backendResult = new BackendResult <StorePurchaseResult, ResultCode>(ResultCode.Succeeded, StorePurchaseResult.GetForFailedPurchaseState());
                    action2(backendResult);
                    break;
                }
            }));
        }
Пример #4
0
        public void ReorderProducts(int productId, int after = 0, int before = 0, Action <BackendResult <bool, ResultCode> > callback = null)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>()
            {
                {
                    "type",
                    "stickers"
                },
                {
                    "product_id",
                    productId.ToString()
                }
            };

            if (after > 0)
            {
                parameters["after"] = after.ToString();
            }
            if (before > 0)
            {
                parameters["before"] = before.ToString();
            }
            VKRequestsDispatcher.DispatchRequestToVK <int>("store.reorderProducts", parameters, (Action <BackendResult <int, ResultCode> >)(result =>
            {
                bool resultData = result.ResultCode == ResultCode.Succeeded && result.ResultData == 1;
                Action <BackendResult <bool, ResultCode> > action = callback;
                if (action == null)
                {
                    return;
                }
                BackendResult <bool, ResultCode> backendResult = new BackendResult <bool, ResultCode>(result.ResultCode, resultData);
                action(backendResult);
            }), null, false, true, new CancellationToken?(), null);
        }
Пример #5
0
 public void GetData(GenericCollectionViewModel <GiftsResponse, GiftHeader> caller, int offset, int count, Action <BackendResult <GiftsResponse, ResultCode> > callback)
 {
     GiftsService.Instance.Get(this._userId, count, offset, (Action <BackendResult <GiftsResponse, ResultCode> >)(result =>
     {
         if (result.ResultCode == ResultCode.Succeeded)
         {
             bool giftsDenied = GiftsViewModel.IsAccessToGiftsDenied(result);
             if (string.IsNullOrEmpty(this._firstNameGen))
             {
                 User user = result.ResultData.user;
                 // ISSUE: explicit non-virtual call
                 this._firstNameGen = user != null ? user.first_name_gen :  null;
                 // ISSUE: method pointer
                 Execute.ExecuteOnUIThread((Action)(() => this.NotifyPropertyChanged <string>((Expression <Func <string> >)(() => this.Title))));
             }
             this.AccessDeniedVisibility = giftsDenied.ToVisiblity();
             // ISSUE: method pointer
             Execute.ExecuteOnUIThread((Action)(() => this.NotifyPropertyChanged <Visibility>((Expression <Func <Visibility> >)(() => this.AccessDeniedVisibility))));
         }
         Action <BackendResult <GiftsResponse, ResultCode> > action = callback;
         if (action == null)
         {
             return;
         }
         BackendResult <GiftsResponse, ResultCode> backendResult = result;
         action(backendResult);
     }));
 }
Пример #6
0
        private async Task <bool> ProcessSingleDashboardRequest(FeedOperationDetails fod)
        {
            BackendResult <WallData, ResultCode> wall = await WallService.Current.GetWall(RemoteIdHelper.GetItemIdByRemoteId(fod.OwnerRemoteId), 0, 1, "owner");

            if (wall.ResultCode == ResultCode.Succeeded && wall.ResultData.wall.Count > 0)
            {
                WallPost wallPost = wall.ResultData.wall[0];
                FeedItem feedItem = this.CreateFeedItem(wallPost, wall.ResultData.groups, wall.ResultData.profiles, false);
                if (feedItem != null)
                {
                    DashboardItem dashboardItem = await SocialManager.OpenContactDashboardAsync(fod);

                    dashboardItem.DefaultTarget = feedItem.DefaultTarget;
                    dashboardItem.Timestamp     = new DateTimeOffset(ExtensionsBase.UnixTimeStampToDateTime((double)wallPost.date, true));
                    if (!string.IsNullOrEmpty(feedItem.PrimaryContent.Title) || !string.IsNullOrEmpty(feedItem.PrimaryContent.Message))
                    {
                        dashboardItem.Content.Title   = feedItem.PrimaryContent.Title;
                        dashboardItem.Content.Message = feedItem.PrimaryContent.Message;
                    }
                    else
                    {
                        dashboardItem.Content.Title   = feedItem.SecondaryContent.Title;
                        dashboardItem.Content.Message = feedItem.SecondaryContent.Message;
                    }
                    dashboardItem.Content.Target = feedItem.PrimaryContent.Target;
                    await dashboardItem.SaveAsync();

                    return(true);
                }
                wallPost = null;
                feedItem = null;
            }
            return(false);
        }
Пример #7
0
 public void GetData(string searchString, Dictionary <string, string> parameters, int offset, int count, Action <BackendResult <VKList <SearchHint>, ResultCode> > callback)
 {
     if (offset == 0 && string.IsNullOrWhiteSpace(searchString) && SearchHintsSearchDataProvider._preloadedSearchHintsLoaded)
     {
         Action <BackendResult <VKList <SearchHint>, ResultCode> > action = callback;
         int num = 0;
         VKList <SearchHint> resultData = new VKList <SearchHint>();
         resultData.items = SearchHintsSearchDataProvider._preloadedSearchHints;
         int count1 = SearchHintsSearchDataProvider._preloadedSearchHints.Count;
         resultData.count = count1;
         BackendResult <VKList <SearchHint>, ResultCode> backendResult = new BackendResult <VKList <SearchHint>, ResultCode>((ResultCode)num, resultData);
         action(backendResult);
     }
     else
     {
         string query = searchString;
         SearchService.Instance.GetSearchHints(searchString, (Action <BackendResult <List <SearchHint>, ResultCode> >)(result =>
         {
             if (result.ResultCode == ResultCode.Succeeded)
             {
                 if (string.IsNullOrEmpty(query))
                 {
                     if (!SearchHintsSearchDataProvider._preloadedSearchHintsLoaded)
                     {
                         SearchHintsSearchDataProvider._preloadedSearchHints        = new List <SearchHint>((IEnumerable <SearchHint>)result.ResultData);
                         SearchHintsSearchDataProvider._preloadedSearchHintsHeaders = new List <SearchHintHeader>((IEnumerable <SearchHintHeader>)Enumerable.Select <SearchHint, SearchHintHeader>(result.ResultData, (Func <SearchHint, SearchHintHeader>)(searchHint => new SearchHintHeader(searchHint))));
                         SearchHintsSearchDataProvider._preloadedSearchHintsLoaded  = true;
                     }
                 }
                 else
                 {
                     string internalLink = SearchHintsSearchDataProvider.TryGetInternalLink(query);
                     if (!string.IsNullOrEmpty(internalLink))
                     {
                         result.ResultData.Add(new SearchHint()
                         {
                             type        = "internal_link",
                             global      = 1,
                             description = internalLink
                         });
                     }
                     result.ResultData.Add(new SearchHint()
                     {
                         type   = "extended_search",
                         global = 1
                     });
                 }
                 callback(new BackendResult <VKList <SearchHint>, ResultCode>(result.ResultCode, new VKList <SearchHint>()
                 {
                     count = result.ResultData.Count,
                     items = result.ResultData
                 }));
             }
             else
             {
                 callback(new BackendResult <VKList <SearchHint>, ResultCode>(result.ResultCode, null));
             }
         }));
     }
 }
Пример #8
0
 public void GetBalanceData(Action <BackendResult <BalanceData, ResultCode> > callback)
 {
     VKRequestsDispatcher.DispatchRequestToVK <BalanceDataResponse>("execute.getBalanceData", new Dictionary <string, string>()
     {
         {
             "type",
             "votes"
         },
         {
             "merchant",
             "microsoft"
         },
         {
             "no_inapp",
             "1"
         }
     }, (Action <BackendResult <BalanceDataResponse, ResultCode> >)(result =>
     {
         BalanceData balanceData        = new BalanceData();
         ResultCode resultCode          = result.ResultCode;
         BalanceDataResponse resultData = result.ResultData;
         List <StockItem> stockItems1   = null;
         BackendResult <BalanceData, ResultCode> backendResult1 = new BackendResult <BalanceData, ResultCode>();
         backendResult1.ResultCode = resultCode;
         BalanceData balanceData1  = balanceData;
         backendResult1.ResultData = balanceData1;
         BackendResult <BalanceData, ResultCode> response = backendResult1;
         if (resultData != null)
         {
             balanceData.Balance            = resultData.balance;
             VKList <StockItem> stockItems2 = resultData.stockItems;
             stockItems1 = stockItems2 != null ? stockItems2.items :  null;
         }
         if (result.ResultCode == ResultCode.Succeeded && stockItems1 != null)
         {
             VotesPacksGenerator.Generate(AppGlobalStateManager.Current.GlobalState.PaymentType, stockItems1, (Action <List <VotesPack> >)(votesPacks =>
             {
                 balanceData.VotesPacks = votesPacks;
                 Action <BackendResult <BalanceData, ResultCode> > action = callback;
                 if (action == null)
                 {
                     return;
                 }
                 BackendResult <BalanceData, ResultCode> backendResult2 = response;
                 action(backendResult2);
             }));
         }
         else
         {
             Action <BackendResult <BalanceData, ResultCode> > action = callback;
             if (action == null)
             {
                 return;
             }
             BackendResult <BalanceData, ResultCode> backendResult2 = response;
             action(backendResult2);
         }
     }), null, false, true, new CancellationToken?(), null);
 }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req)
        {
            _logger.LogInformation($"C# HTTP trigger function AssignNewHostToCalendarItem processed a request.");
            string tenant = req.Headers[Constants.HEADER_TENANT];

            if (String.IsNullOrWhiteSpace(tenant))
            {
                tenant = null;
            }
            ServerSettings serverSettings = await _serverSettingsRepository.GetServerSettings(tenant);

            string keyWord = req.Headers[Constants.HEADER_KEYWORD];

            if (String.IsNullOrEmpty(keyWord) || !(serverSettings.IsUser(keyWord)))
            {
                return(new BadRequestErrorMessageResult("Keyword is missing or wrong."));
            }
            string      requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            Participant participant = JsonConvert.DeserializeObject <Participant>(requestBody);

            // Check if participant has an id
            if (String.IsNullOrEmpty(participant.Id))
            {
                return(new OkObjectResult(new BackendResult(false, "Id des Teilnehmers fehlt.")));
            }
            if (String.IsNullOrEmpty(participant.ParticipantFirstName) || String.IsNullOrEmpty(participant.ParticipantLastName))
            {
                return(new OkObjectResult(new BackendResult(false, "Name unvollständig.")));
            }
            // Get and check corresponding CalendarItem
            if (String.IsNullOrEmpty(participant.CalendarItemId))
            {
                return(new OkObjectResult(new BackendResult(false, "Terminangabe fehlt.")));
            }
            CalendarItem calendarItem = await _calendarRepository.GetItem(participant.CalendarItemId);

            if (null == calendarItem)
            {
                return(new OkObjectResult(new BackendResult(false, "Angegebenen Termin nicht gefunden.")));
            }
            // Assign participant as new host
            calendarItem.HostFirstName  = participant.ParticipantFirstName;
            calendarItem.HostLastName   = participant.ParticipantLastName;
            calendarItem.HostAdressInfo = participant.ParticipantAdressInfo;
            calendarItem.WithoutHost    = false;
            // Set TTL and write CalendarItem to database
            System.TimeSpan diffTime = calendarItem.StartDate.Subtract(DateTime.Now);
            calendarItem.TimeToLive = serverSettings.AutoDeleteAfterDays * 24 * 3600 + (int)diffTime.TotalSeconds;
            calendarItem            = await _calendarRepository.UpsertItem(calendarItem);

            // Delete host as participant
            await _cosmosRepository.DeleteItemAsync(participant.Id);

            BackendResult result = new BackendResult(true);

            return(new OkObjectResult(result));
        }
Пример #10
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req)
        {
            _logger.LogInformation($"C# HTTP trigger function AddCommentToCalendarItem processed a request.");
            string tenant = req.Headers[Constants.HEADER_TENANT];

            if (String.IsNullOrWhiteSpace(tenant))
            {
                tenant = null;
            }
            ServerSettings serverSettings = await _serverSettingsRepository.GetServerSettings(tenant);

            string keyWord = req.Headers[Constants.HEADER_KEYWORD];

            if (String.IsNullOrEmpty(keyWord) || !serverSettings.IsUser(keyWord))
            {
                return(new BadRequestErrorMessageResult("Keyword is missing or wrong."));
            }
            string          requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            CalendarComment comment     = JsonConvert.DeserializeObject <CalendarComment>(requestBody);

            // Get and check corresponding CalendarItem
            if (String.IsNullOrEmpty(comment.CalendarItemId))
            {
                return(new OkObjectResult(new BackendResult(false, "Terminangabe fehlt.")));
            }
            CalendarItem calendarItem = await _calendarRepository.GetItem(comment.CalendarItemId);

            if (null == calendarItem)
            {
                return(new OkObjectResult(new BackendResult(false, "Angegebenen Termin nicht gefunden.")));
            }
            ExtendedCalendarItem extendedCalendarItem = new ExtendedCalendarItem(calendarItem);

            // Read all participants for this calendar item
            extendedCalendarItem.ParticipantsList = await _participantRepository.GetItems(p => p.CalendarItemId.Equals(extendedCalendarItem.Id));

            // Set TTL for comment the same as for CalendarItem
            System.TimeSpan diffTime = calendarItem.StartDate.Subtract(DateTime.Now);
            comment.TimeToLive = serverSettings.AutoDeleteAfterDays * 24 * 3600 + (int)diffTime.TotalSeconds;
            // Checkindate to track bookings
            comment.CommentDate = DateTime.Now;
            if (!String.IsNullOrWhiteSpace(tenant))
            {
                comment.Tenant = tenant;
            }

            comment = await _cosmosRepository.UpsertItem(comment);

            if (!String.IsNullOrEmpty(comment.Comment))
            {
                await _subscriptionRepository.NotifyParticipants(extendedCalendarItem, comment.AuthorFirstName, comment.AuthorLastName, comment.Comment);
            }

            BackendResult result = new BackendResult(true);

            return(new OkObjectResult(result));
        }
Пример #11
0
        public void GetStockItems(List <StoreProductFilter> productFilters = null, Action <BackendResult <List <StockItem>, ResultCode> > callback = null)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>()
            {
                {
                    "type",
                    "stickers"
                },
                {
                    "merchant",
                    "microsoft"
                },
                {
                    "no_inapp",
                    "1"
                },
                {
                    "extended",
                    "1"
                }
            };

            if (productFilters != null && productFilters.Count > 0)
            {
                parameters["filters"] = string.Join(",", productFilters.Select <StoreProductFilter, string>((Func <StoreProductFilter, string>)(filter => filter.ToString().ToLowerInvariant())));
            }
            VKRequestsDispatcher.DispatchRequestToVK <ProductsWithStockItems>("execute.getProductsWithStockItems", parameters, (Action <BackendResult <ProductsWithStockItems, ResultCode> >)(result =>
            {
                List <StockItem> resultData1 = new List <StockItem>();
                if (result.ResultCode == ResultCode.Succeeded)
                {
                    ProductsWithStockItems resultData2 = result.ResultData;
                    if ((resultData2 != null ? resultData2.products.items :  null) != null)
                    {
                        VKList <StockItem> stockItems = resultData2.stockItems;
                        if ((stockItems != null ? stockItems.items :  null) != null)
                        {
                            foreach (StoreProduct storeProduct in resultData2.products.items)
                            {
                                StoreProduct product = storeProduct;
                                StockItem stockItem  = resultData2.stockItems.items.FirstOrDefault <StockItem>((Func <StockItem, bool>)(i => i.product.id == product.id));
                                if (stockItem != null)
                                {
                                    resultData1.Add(stockItem);
                                }
                            }
                        }
                    }
                }
                Action <BackendResult <List <StockItem>, ResultCode> > action = callback;
                if (action == null)
                {
                    return;
                }
                BackendResult <List <StockItem>, ResultCode> backendResult = new BackendResult <List <StockItem>, ResultCode>(result.ResultCode, resultData1);
                action(backendResult);
            }), null, false, true, new CancellationToken?(), null);
        }
Пример #12
0
 internal void b__0(BackendResult <LookupContactsResponse, ResultCode> result)
 {
     ContactsSyncManager.c__DisplayClass9_0.d stateMachine;
     stateMachine._4__this   = this;
     stateMachine.result     = result;
     stateMachine.t__builder = AsyncVoidMethodBuilder.Create();
     stateMachine._1__state  = -1;
     stateMachine.t__builder.Start <ContactsSyncManager.c__DisplayClass9_0.d>(ref stateMachine);
 }
Пример #13
0
        public virtual BackendResult Build()
        {
            BackendResult result = null;

            foreach (var package in Input.Packages)
            {
                result = Build(package);
            }
            return(result);
        }
Пример #14
0
        private static bool IsAccessToGiftsDenied(BackendResult <GiftsResponse, ResultCode> result)
        {
            List <ExecuteError> executeErrors = result.ExecuteErrors;

            if (executeErrors != null)
            {
                return(Enumerable.Any <ExecuteError>(executeErrors, (Func <ExecuteError, bool>) new Func <ExecuteError, bool>(GiftsViewModel.IsAccessToGiftsDeniedError)));
            }
            return(false);
        }
Пример #15
0
        public async Task <BackendResult> AssignNewHostToCalendarItem(string tenant, string keyword, Participant participant)
        {
            BackendResult result = await $"https://{_functionsConfig.FunctionAppName}.azurewebsites.net/api/AssignNewHostToCalendarItem"
                                   .WithHeader(HEADER_FUNCTIONS_KEY, _functionsConfig.ApiKey)
                                   .WithHeader(HEADER_KEYWORD, keyword)
                                   .WithHeader(HEADER_TENANT, tenant)
                                   .PostJsonAsync(participant)
                                   .ReceiveJson <BackendResult>();

            return(result);
        }
Пример #16
0
        public async Task <BackendResult> DeleteInfoItem(string tenant, string keyword, InfoItem infoItem)
        {
            BackendResult result = await $"https://{_functionsConfig.FunctionAppName}.azurewebsites.net/api/DeleteInfoItem"
                                   .WithHeader(HEADER_FUNCTIONS_KEY, _functionsConfig.ApiKey)
                                   .WithHeader(HEADER_KEYWORD, keyword)
                                   .WithHeader(HEADER_TENANT, tenant)
                                   .PostJsonAsync(infoItem)
                                   .ReceiveJson <BackendResult>();

            return(result);
        }
Пример #17
0
        public async Task <BackendResult> RemoveCommentFromCalendarItem(string tenant, string keyword, CalendarComment comment)
        {
            BackendResult result = await $"https://{_functionsConfig.FunctionAppName}.azurewebsites.net/api/RemoveCommentFromCalendarItem"
                                   .WithHeader(HEADER_FUNCTIONS_KEY, _functionsConfig.ApiKey)
                                   .WithHeader(HEADER_KEYWORD, keyword)
                                   .WithHeader(HEADER_TENANT, tenant)
                                   .PostJsonAsync(comment)
                                   .ReceiveJson <BackendResult>();

            return(result);
        }
Пример #18
0
        public async void GetData(GenericCollectionViewModel <List <User>, Group <FriendHeader> > caller, int offset, int count, Action <BackendResult <List <User>, ResultCode> > callback)
        {
            if (this._pickUserMode == PickUserMode.PickForStickerPackGift)
            {
                StoreService.Instance.GetFriendsList(this._productId, (Action <BackendResult <List <User>, ResultCode> >)(result =>
                {
                    if (result.ResultCode == ResultCode.Succeeded)
                    {
                        this._allFriendsRaw = result.ResultData;
                    }
                    Action <BackendResult <List <User>, ResultCode> > action = callback;
                    if (action == null)
                    {
                        return;
                    }
                    BackendResult <List <User>, ResultCode> backendResult = result;
                    action(backendResult);
                }));
            }
            else
            {
                SavedContacts friends = (SavedContacts)await FriendsCache.Instance.GetFriends();

                if ((DateTime.UtcNow - friends.SyncedDate).TotalMinutes < 60.0)
                {
                    List <User> resultData = null;
                    if (friends.SavedUsers != null)
                    {
                        resultData = this._sexFilter > 0 ? (List <User>)Enumerable.ToList <User>(Enumerable.Where <User>(friends.SavedUsers, (Func <User, bool>)(u => u.sex == this._sexFilter))) : friends.SavedUsers;
                    }
                    this._allFriendsRaw = resultData;
                    callback(new BackendResult <List <User>, ResultCode>(ResultCode.Succeeded, resultData));
                }
                else
                {
                    UsersService.Instance.GetFriendsForCurrentUser((Action <BackendResult <List <User>, ResultCode> >)(res =>
                    {
                        if (res.ResultCode == ResultCode.Succeeded)
                        {
                            List <User> userList = null;
                            if (res.ResultData != null)
                            {
                                userList = this._sexFilter > 0 ? (List <User>)Enumerable.ToList <User>(Enumerable.Where <User>(res.ResultData, (Func <User, bool>)(u => u.sex == this._sexFilter))) : res.ResultData;
                            }
                            this._allFriendsRaw = userList;
                        }
                        callback(res);
                    }));
                }
            }
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req)
        {
            _logger.LogInformation($"C# HTTP trigger function AddCommentToInfoItem processed a request.");
            string tenant = req.Headers[Constants.HEADER_TENANT];

            if (String.IsNullOrWhiteSpace(tenant))
            {
                tenant = null;
            }
            ServerSettings serverSettings = await _serverSettingsRepository.GetServerSettings(tenant);

            string keyWord = req.Headers[Constants.HEADER_KEYWORD];

            if (String.IsNullOrEmpty(keyWord) || !serverSettings.IsUser(keyWord))
            {
                return(new BadRequestErrorMessageResult("Keyword is missing or wrong."));
            }
            string          requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            CalendarComment comment     = JsonConvert.DeserializeObject <CalendarComment>(requestBody);

            // Get and check corresponding CalendarItem
            if (String.IsNullOrEmpty(comment.CalendarItemId))
            {
                return(new OkObjectResult(new BackendResult(false, "Terminangabe fehlt.")));
            }
            InfoItem infoItem = await _infoRepository.GetItem(comment.CalendarItemId);

            if (null == infoItem)
            {
                return(new OkObjectResult(new BackendResult(false, "Angegebenen Termin nicht gefunden.")));
            }
            if (!infoItem.CommentsAllowed)
            {
                return(new OkObjectResult(new BackendResult(false, "Keine Kommentare hier erlaubt.")));
            }
            if (infoItem.CommentsLifeTimeInDays > 0)
            {
                comment.TimeToLive = infoItem.CommentsLifeTimeInDays * 24 * 3600;
            }
            comment.CommentDate = DateTime.Now;
            if (!String.IsNullOrWhiteSpace(tenant))
            {
                comment.Tenant = tenant;
            }
            comment = await _cosmosRepository.UpsertItem(comment);

            BackendResult result = new BackendResult(true);

            return(new OkObjectResult(result));
        }
Пример #20
0
        private static void SaveProfilePhoto(UploadPhotoResponseData responseData, long ownerId, Action <BackendResult <ProfilePhoto, ResultCode> > callback)
        {
            Action <BackendResult <ProfilePhoto, ResultCode> > callback1 = (Action <BackendResult <ProfilePhoto, ResultCode> >)(result =>
            {
                if (result.ResultCode == ResultCode.Succeeded && ownerId < 0L)
                {
                    BackendResult <ProfilePhoto, ResultCode> savePhotoResult = result;
                    Action <BackendResult <Group[], ResultCode> > callback2  = (Action <BackendResult <Group[], ResultCode> >)(getGroupResult =>
                    {
                        if (getGroupResult.ResultCode == ResultCode.Succeeded)
                        {
                            savePhotoResult.ResultData.photo_200 = ((IEnumerable <Group>)getGroupResult.ResultData).First <Group>().photo_200;
                            callback(savePhotoResult);
                        }
                        else
                        {
                            result.ResultCode = getGroupResult.ResultCode;
                            callback(result);
                        }
                    });
                    VKRequestsDispatcher.DispatchRequestToVK <Group[]>("groups.getById", new Dictionary <string, string>()
                    {
                        {
                            "group_id",
                            (-ownerId).ToString()
                        }
                    }, callback2, (Func <string, Group[]>)null, false, true, new CancellationToken?(), null);
                }
                else
                {
                    callback(result);
                }
            });

            VKRequestsDispatcher.DispatchRequestToVK <ProfilePhoto>("photos.saveOwnerPhoto", new Dictionary <string, string>()
            {
                {
                    "server",
                    responseData.server
                },
                {
                    "photo",
                    responseData.photo
                },
                {
                    "hash",
                    responseData.hash
                }
            }, callback1, null, false, true, new CancellationToken?(), null);
        }
Пример #21
0
 private void Initialize()
 {
     EventAggregator.Current.Subscribe((object)this);
     this._helperGetFriendsAndMutual   = new AsyncHelper <BackendResult <FriendsAndMutualFriends, ResultCode> >((Action <Action <BackendResult <FriendsAndMutualFriends, ResultCode> > >)(a => UsersService.Instance.GetFriendsAndMutual(this._uid, a)));
     this._helperGetCurrentUserFriends = new AsyncHelper <BackendResult <List <User>, ResultCode> >((Action <Action <BackendResult <List <User>, ResultCode> > >)(a => UsersService.Instance.GetFriendsWithRequests((Action <BackendResult <AllFriendsList, ResultCode> >)(async(res) =>
     {//omg_re async
         if (res.ResultCode == ResultCode.Succeeded)
         {
             FriendsCache.Instance.SetFriends(res.ResultData.friends, res.ResultData.requests);
             await ContactsManager.Instance.SyncContactsAsync(res.ResultData.friends);
             this.RequestsViewModel = res.ResultData.requests;
             CountersManager.Current.Counters.friends = this.RequestsViewModel.menu_counter;
             EventAggregator.Current.Publish((object)new CountersChanged(CountersManager.Current.Counters));
         }
         Action <BackendResult <List <User>, ResultCode> > action = a;
         BackendResult <List <User>, ResultCode> backendResult    = new BackendResult <List <User>, ResultCode>();
         backendResult.Error       = res.Error;
         backendResult.ResultCode  = res.ResultCode;
         AllFriendsList resultData = res.ResultData;
         List <User> userList      = resultData != null ? resultData.friends : (List <User>)null;
         backendResult.ResultData  = userList;
         action(backendResult);
     }))));
     this._helperFriendsFromList = new AsyncHelper <BackendResult <List <User>, ResultCode> >((Action <Action <BackendResult <List <User>, ResultCode> > >)(a => UsersService.Instance.GetFriendsForList(this._lid, a)));
     this._allFriendsVM          = new GenericCollectionViewModel <List <User>, Group <FriendHeader> >((ICollectionDataProvider <List <User>, Group <FriendHeader> >) this)
     {
         NeedCollectionCountBeforeFullyLoading = true,
         RecreateCollectionOnRefresh           = true
     };
     this._onlineFriendsVM = new GenericCollectionViewModel <List <User>, FriendHeader>((ICollectionDataProvider <List <User>, FriendHeader>) this)
     {
         NeedCollectionCountBeforeFullyLoading = true
     };
     this._commonFriendsVM = new GenericCollectionViewModel <List <User>, FriendHeader>((ICollectionDataProvider <List <User>, FriendHeader>) this)
     {
         NeedCollectionCountBeforeFullyLoading = true
     };
     this._friendsListVM = new GenericCollectionViewModel <List <FriendsList>, FriendHeader>((ICollectionDataProvider <List <FriendsList>, FriendHeader>) this)
     {
         NeedCollectionCountBeforeFullyLoading = true
     };
     if (this._lid != 0)
     {
         return;
     }
     this._allFriendsVM.NoContentText  = CommonResources.NoContent_Friends;
     this._allFriendsVM.NoContentImage = "../Resources/NoContentImages/Friends.png";
 }
 public void GetData(string searchString, Dictionary <string, string> parameters, int offset, int count, Action <BackendResult <VKList <Group>, ResultCode> > callback)
 {
     if (this._isManagedOnly)
     {
         BackendResult <VKList <Group>, ResultCode> backendResult = new BackendResult <VKList <Group>, ResultCode>()
         {
             ResultCode = ResultCode.Succeeded,
             ResultData = new VKList <Group>()
         };
         callback(backendResult);
     }
     else
     {
         GroupsService.Current.Search(searchString, offset, count, callback);
     }
 }
Пример #23
0
 internal BuildResult(Log log, Project project, BuildTarget target, ICompiler compiler, BuildOptions options, BuildFile file, BackendResult result)
 {
     Log             = log;
     Project         = project;
     Target          = target;
     File            = file;
     Compiler        = compiler;
     ErrorCount      = log.ErrorCount;
     WarningCount    = log.WarningCount;
     OutputDirectory = compiler.Environment.OutputDirectory;
     RunArguments    = options.RunArguments;
     BackendResult   = result;
     IL         = compiler.Data.IL;
     Entrypoint = compiler.Data.Entrypoint;
     IsDebug    = compiler.Environment.Debug;
 }
Пример #24
0
        private async Task <bool> ProcessContactFeeds(List <FeedOperationDetails> fodList)
        {
            List <WallService.WallRequestData> requestData = new List <WallService.WallRequestData>();

            using (List <FeedOperationDetails> .Enumerator enumerator = fodList.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    FeedOperationDetails current = enumerator.Current;
                    requestData.Add(new WallService.WallRequestData()
                    {
                        UserId = RemoteIdHelper.GetItemIdByRemoteId(current.OwnerRemoteId),
                        Offset = this.GetRequiredOffset(current),
                        Count  = current.ItemCount
                    });
                }
            }
            BackendResult <List <WallData>, ResultCode> res = await WallService.Current.GetWallForManyUsers(requestData);

            if (res.ResultCode != ResultCode.Succeeded)
            {
                return(false);
            }
            for (int i = 0; i < fodList.Count && i < res.ResultData.Count; ++i)
            {
                FeedOperationDetails fod             = fodList[i];
                WallData             currentWallData = res.ResultData[i];
                int  nextOffset = this.GetRequiredOffset(fod) + currentWallData.wall.Count;
                Feed feed       = await SocialManager.OpenContactFeedAsync(fod);

                foreach (WallPost wallPost in currentWallData.wall)
                {
                    FeedItem feedItem = this.CreateFeedItem(wallPost, currentWallData.groups, currentWallData.profiles, true);
                    if (feedItem != null)
                    {
                        this.SetRequiredOffset(feedItem, nextOffset);
                        ((ICollection <FeedItem>)feed.Items).Add(feedItem);
                    }
                }
                await feed.SaveAsync();

                currentWallData = null;
            }
            return(true);
        }
Пример #25
0
        private static void HandleStorePurchaseError(BackendResult <StorePurchaseResult, ResultCode> result, Action callback = null)
        {
            ResultCode resultCode = result.ResultCode;

            if (resultCode != ResultCode.Succeeded)
            {
                GenericInfoUC.ShowBasedOnResult(resultCode, "", (VKRequestsDispatcher.Error)null);
            }
            else if (result.ResultData != null && result.ResultData.state < 0)
            {
                Execute.ExecuteOnUIThread((Action)(() => new GenericInfoUC(2000).ShowAndHideLater(result.ResultData.error_message ?? CommonResources.UnableToCompletePurchase, null)));
            }
            if (callback == null)
            {
                return;
            }
            callback();
        }
Пример #26
0
        private void HandleLogin(BackendResult <AutorizationData, ResultCode> result)
        {
            ServiceLocator.Resolve <IAppStateInfo>().HandleSuccessfulLogin(result.ResultData, false);
            if (string.IsNullOrEmpty(this._registrationProfileVM.FullAvatarUri))
            {
                return;
            }
            SettingsEditProfileViewModel profileViewModel = new SettingsEditProfileViewModel();

            using (IsolatedStorageFile storeForApplication = IsolatedStorageFile.GetUserStoreForApplication())
            {
                MemoryStream memoryStream = new MemoryStream();
                using (IsolatedStorageFileStream storageFileStream = storeForApplication.OpenFile(this._registrationProfileVM.FullAvatarUri, FileMode.Open, FileAccess.Read))
                    memoryStream = StreamUtils.ReadFully((Stream)storageFileStream);
                memoryStream.Position = 0L;
                profileViewModel.UploadUserPhoto((Stream)memoryStream, this._registrationProfileVM.CropPhotoRect);
            }
        }
Пример #27
0
        private async Task <bool> ProcessConnectData(DownloadRichConnectDataOperation downloadRichConnectDataOperation)
        {
            ContactBindingManager store = await ContactBindings.GetAppContactBindingManagerAsync();

            ContactStore contactStore = await ContactStore.CreateOrOpenAsync();

            foreach (string id in (IEnumerable <string>)downloadRichConnectDataOperation.Ids)
            {
                string remoteId = id;
                try
                {
                    string         title          = (await contactStore.FindContactByRemoteIdAsync(remoteId)).DisplayName;
                    ContactBinding contactBinding = await store.GetContactBindingByRemoteIdAsync(remoteId);

                    ConnectTileData connectTileData = new ConnectTileData();
                    connectTileData.Title = title;
                    BackendResult <PhotosListWithCount, ResultCode> profilePhotos = await PhotosService.Current.GetProfilePhotos(RemoteIdHelper.GetItemIdByRemoteId(remoteId), 0, 3);

                    if (profilePhotos.ResultCode == ResultCode.Succeeded)
                    {
                        for (int index = 0; index < Math.Min(3, profilePhotos.ResultData.response.Count); ++index)
                        {
                            Photo            photo            = profilePhotos.ResultData.response[index];
                            ConnectTileImage connectTileImage = new ConnectTileImage();
                            connectTileImage.ImageUrl = photo.src_big;
                            ((ICollection <ConnectTileImage>)connectTileData.Images).Add(connectTileImage);
                        }
                    }
                    contactBinding.TileData = connectTileData;
                    await store.SaveContactBindingAsync(contactBinding);

                    title           = null;
                    contactBinding  = null;
                    connectTileData = null;
                }
                catch (Exception ex)
                {
                    Logger.Instance.Error("ProcessConnectData failed", ex);
                }
                remoteId = null;
            }
            return(true);
        }
Пример #28
0
 public static void ShowAndReloadStickers(long stickerId, string referrer)
 {
     StickersPackView.ShowWithLoader(referrer, (Action <Action <BackendResult <StockItem, ResultCode> >, CancellationToken>)((callback, cancellationToken) => StoreService.Instance.GetStockItemByStickerId(stickerId, (Action <BackendResult <StockItem, ResultCode> >)(result =>
     {
         if (result.ResultCode == ResultCode.Succeeded)
         {
             StockItem resultData      = result.ResultData;
             StoreProduct storeProduct = resultData != null ? resultData.product :  null;
             if (storeProduct != null && storeProduct.purchased == 1 && storeProduct.active == 1)
             {
                 EventAggregator.Current.Publish(new StickersUpdatedEvent(new StockItemHeader(resultData, false, 0, false)));
             }
         }
         Action <BackendResult <StockItem, ResultCode> > action = callback;
         if (action == null)
         {
             return;
         }
         BackendResult <StockItem, ResultCode> backendResult = result;
         action(backendResult);
     }), new CancellationToken?(cancellationToken))), 0, false);
 }
Пример #29
0
        private async Task <bool> ProcessHomeFeed(DownloadHomeFeedOperation downloadHomeFeedOperation)
        {
            try
            {
                List <Task>          taskList = new List <Task>();
                FeedOperationDetails op       = downloadHomeFeedOperation.FeedOperationDetails;
                BackendResult <NewsFeedData, ResultCode> res = await NewsFeedService.Current.GetNewsFeed(this.CreateNewsFeedGetParams(op));

                if (res.ResultCode == ResultCode.Succeeded)
                {
                    NewsFeedData newsFeedData = res.ResultData;
                    Feed         feed         = await SocialManager.OpenHomeFeedAsync(op);

                    foreach (NewsItem newsFeedItem in newsFeedData.items)
                    {
                        FeedItem feedItem = this.CreateFeedItem(newsFeedItem, newsFeedData.groups, newsFeedData.profiles);
                        if (feedItem != null)
                        {
                            ((ICollection <FeedItem>)feed.Items).Add(feedItem);
                        }
                    }
                    if (((IEnumerable <FeedItem>)feed.Items).Any <FeedItem>())
                    {
                        RemoteIdHelper.NewsFeedNewFromData.Instance.SetParams(((IEnumerable <FeedItem>)feed.Items).Last <FeedItem>().RemoteId, res.ResultData.new_offset, res.ResultData.next_from);
                    }
                    await feed.SaveAsync();

                    newsFeedData = (NewsFeedData)null;
                }
                return(res.ResultCode == ResultCode.Succeeded);
            }
            catch
            {
                Debugger.Break();
                return(false);
            }
        }
Пример #30
0
 public void GetUpdates(string serverName, string key, long ts, Action <BackendResult <UpdatesResponse, LongPollResultCode> > callback)
 {
     JsonWebRequest.SendHTTPRequestAsync(string.Format(this._getUpdatesURIFrm, serverName, key, ts), (Action <JsonResponseData>)(jsonResp =>
     {
         BackendResult <UpdatesResponse, LongPollResultCode> backendResult = new BackendResult <UpdatesResponse, LongPollResultCode>();
         if (!jsonResp.IsSucceeded || string.IsNullOrWhiteSpace(jsonResp.JsonString))
         {
             backendResult.ResultCode = LongPollResultCode.CommunicationFailed;
         }
         else if (this.ServerReturnedFailure(jsonResp.JsonString))
         {
             backendResult.ResultCode = LongPollResultCode.RequireNewPollServer;
         }
         else
         {
             backendResult.ResultCode = LongPollResultCode.Succeeded;
             LongPollServerService.RootObjectGetUpdates objectGetUpdates = JsonConvert.DeserializeObject <LongPollServerService.RootObjectGetUpdates>(jsonResp.JsonString);
             backendResult.ResultData         = new UpdatesResponse();
             backendResult.ResultData.ts      = (long)objectGetUpdates.ts;
             backendResult.ResultData.Updates = this.ReadUpdatesResponseFromRaw(objectGetUpdates.updates, new Func <List <object>, LongPollServerUpdateData>(this.GetUpdateDataForNewMessageLongPollData));
         }
         callback(backendResult);
     }), null);
 }