public async Task <ActionResult <TSReaction> > GetReaction()
        {
            string userID = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10);
            await TS.AddActivityLog(userID, "Requested Reaction", MethodBase.GetCurrentMethod());

            SymmKeyAndIV ClientSymmKeyAndIV = new SymmKeyAndIV
            {
                Key = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "ClientSymmKey", 5),
                IV  = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "ClientSymmIV", 10)
            };

            if (!string.IsNullOrEmpty(ClientSymmKeyAndIV.Key))
            {
                TSReactionEntity reactionEntity = await TS.FindReaction(userID, true, string.Empty);

                if (reactionEntity != null)
                {
                    TSReaction result = reactionEntity.toTSReaction();
                    GlobalFunctions.CmdEncryptEntitySymm(result, ClientSymmKeyAndIV);

                    return(result);
                }
                else
                {
                    return(new TSReaction());
                }
            }
            else
            {
                return(new TSReaction());
            }
        }
Example #2
0
 public CosmosDocReaction(TSReaction tsReaction)
 {
     UserID        = tsReaction.UserID;
     ID            = tsReaction.ID;
     LikeOrDislike = tsReaction.LikeOrDislike;
     DocType       = (int)DocTypeEnum.Reaction;
     GeneratePK();
 }
Example #3
0
        public static async Task CmdAddOrUpdateReaction(TSReaction ParTSReaction)
        {
            httpClient.DefaultRequestHeaders.Accept.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", LocalData.CurrJWT);

            GlobalFunctions.CmdTrimEntity(ParTSReaction);

            TSReaction tsReactionForSend = GlobalFunctions.CopyObject <TSReaction>(ParTSReaction);


            LocalData.currReaction = await httpClient.MyPostJsonGetJsonAsync("reaction/add", tsReactionForSend);

            httpClient.DefaultRequestHeaders.Accept.Clear();
        }
 public TSReactionEntity(TSReaction tsReaction)
 {
     PartitionKey  = tsReaction.UserID;
     RowKey        = tsReaction.ReactionID.ToString();
     LikeOrDislike = tsReaction.LikeOrDislike;
 }
        public async Task <ActionResult <TSReaction> > Add(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "reaction/add")] HttpRequest req,
            ILogger log)
        {
            List <WebApiUserTypesEnum> localAllowedRoles = new List <WebApiUserTypesEnum>
            {
                WebApiUserTypesEnum.Authorized,
                WebApiUserTypesEnum.Admin
            };

            ClaimsPrincipal User = MyTokenValidator.Authenticate(req, localAllowedRoles, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            Guid userID = Guid.Parse(LocalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())));

            TSReaction tsReaction = await MyFromBody <TSReaction> .FromBody(req, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            tsReaction.UserID = userID;


            await CosmosAPI.cosmosDBClientActivity.AddActivityLog(userID, "Add or update Reaction", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            string userName = LocalFunctions.CmdGetValueFromClaim(User.Claims, "UserName", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            if (!tsReaction.UserID.Equals(Guid.Empty))
            {
                if (userName.Equals("demouser"))
                {
                    return(new TSReaction());
                }
            }

            CosmosDocReaction oldReaction = await CosmosAPI.cosmosDBClientReaction.FindReaction(tsReaction.UserID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            if (oldReaction is null)
            {
                tsReaction.ID = Guid.NewGuid();
                bool b = await CosmosAPI.cosmosDBClientReaction.AddReaction(tsReaction, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

                if (b)
                {
                    if (tsReaction.LikeOrDislike)
                    {
                        await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "LikesCount", true, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));
                    }
                    else
                    {
                        await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "DislikesCount", true, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));
                    }
                }
            }
            else
            {
                tsReaction.ID = oldReaction.ID;
                if (oldReaction.LikeOrDislike != tsReaction.LikeOrDislike)
                {
                    if (oldReaction.LikeOrDislike)
                    {
                        await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "LikesCount", false, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));
                    }
                    else
                    {
                        await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "DislikesCount", false, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));
                    }



                    bool b = await CosmosAPI.cosmosDBClientReaction.UpdateReaction(tsReaction, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

                    if (b)
                    {
                        if (tsReaction.LikeOrDislike)
                        {
                            await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "LikesCount", true, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));
                        }
                        else
                        {
                            await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "DislikesCount", true, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));
                        }
                    }
                }
            }



            CosmosDocReaction reactionEntity = await CosmosAPI.cosmosDBClientReaction.FindReaction(tsReaction.UserID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            if (reactionEntity != null)
            {
                return(reactionEntity.toTSReaction());
            }
            else
            {
                return(new TSReaction());
            }
        }
 public async Task <TSReaction> GetReaction(TSReaction tsReaction, List <string> CallTrace)
 {
     return((await cosmosDBClientBase.GetItemAsync(new CosmosDocReaction(tsReaction), pkPrefix, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod()))).toTSReaction());
 }
 public async Task <bool> UpdateReaction(TSReaction tsReaction, List <string> CallTrace)
 {
     return(await cosmosDBClientBase.UpdateItemAsync(new CosmosDocReaction(tsReaction), LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())));
 }
        public async Task <ActionResult <TSReaction> > AddReaction([FromBody] TSReaction TSReaction)
        {
            TSReaction.UserID = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10);
            await TS.AddActivityLog(TSReaction.UserID, "Add or update Reaction", MethodBase.GetCurrentMethod());

            string userName = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "UserName", 10);

            if (!string.IsNullOrEmpty(TSReaction.UserID))
            {
                if (userName.Equals("demouser"))
                {
                    return(new TSReaction());
                }
            }

            TSReactionEntity oldReaction = await TS.FindReaction(TSReaction.UserID, true, string.Empty);

            if (oldReaction is null)
            {
                string a = await TS.GetNewID("AllUsers", "LastReactionID", false);

                TSReaction.ReactionID = int.Parse(a);

                bool b = await TS.AddReaction(TSReaction);

                if (b)
                {
                    await GlobalFunctions.NotifyAdmin("New Reaction " + userName + " " + TSReaction.LikeOrDislike);

                    if (TSReaction.LikeOrDislike)
                    {
                        await TS.UpdateSettingCounter("AllUsers", "LikesCount", true);
                    }
                    else
                    {
                        await TS.UpdateSettingCounter("AllUsers", "DislikesCount", true);
                    }
                }
            }
            else
            {
                if (oldReaction.LikeOrDislike != TSReaction.LikeOrDislike)
                {
                    if (oldReaction.LikeOrDislike)
                    {
                        await TS.UpdateSettingCounter("AllUsers", "LikesCount", false);
                    }
                    else
                    {
                        await TS.UpdateSettingCounter("AllUsers", "DislikesCount", false);
                    }



                    bool b = await TS.UpdateReaction(TSReaction);

                    if (b)
                    {
                        await GlobalFunctions.NotifyAdmin("Reaction update to " + TSReaction.LikeOrDislike + " " + userName);

                        if (TSReaction.LikeOrDislike)
                        {
                            await TS.UpdateSettingCounter("AllUsers", "LikesCount", true);
                        }
                        else
                        {
                            await TS.UpdateSettingCounter("AllUsers", "DislikesCount", true);
                        }
                    }
                }
            }


            SymmKeyAndIV ClientSymmKeyAndIV = new SymmKeyAndIV
            {
                Key = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "ClientSymmKey", 5),
                IV  = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "ClientSymmIV", 10)
            };


            if (!string.IsNullOrEmpty(ClientSymmKeyAndIV.Key))
            {
                TSReactionEntity reactionEntity = await TS.FindReaction(TSReaction.UserID, true, string.Empty);

                if (reactionEntity != null)
                {
                    TSReaction result = reactionEntity.toTSReaction();
                    GlobalFunctions.CmdEncryptEntitySymm(result, ClientSymmKeyAndIV);
                    return(result);
                }
                else
                {
                    return(new TSReaction());
                }
            }
            else
            {
                return(new TSReaction());
            }
        }