public async Task <ActionResult <TSFeedback> > Get( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "feedback/get")] HttpRequest req, ILogger log) { ClaimsPrincipal User = MyTokenValidator.Authenticate(req, AllowedRoles, 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()))); await CosmosAPI.cosmosDBClientActivity.AddActivityLog(userID, "Requested Feedback", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); CosmosDocFeedback feedbackDoc = await CosmosAPI.cosmosDBClientFeedback.FindFeedback(userID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (feedbackDoc != null) { return(feedbackDoc.toTSFeedback()); } else { return(new TSFeedback()); } }
public static async void Run([CosmosDBTrigger( databaseName: "%CosmosDbDatabaseName%", collectionName: "%CosmosDbCollectionName%", ConnectionStringSetting = "CosmosDBConnStr", LeaseCollectionName = "leases", CreateLeaseCollectionIfNotExists = true)] IReadOnlyList <Document> input, ILogger log) { TodosCosmos.LocalFunctions.ConsolePrint("============== feed =================", true); ILookup <DocTypeEnum, Document> dict = input.ToLookup(x => (DocTypeEnum)x.GetPropertyValue <byte>("doctype"), x => x); //process errors foreach (var item in dict[DocTypeEnum.Error]) { CosmosDocErrorLog d = (dynamic)item; await TodosCosmos.LocalFunctions.NotifyAdmin("Error: " + d.Description, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("Error: " + d.Description); } //process todos foreach (var item in dict[DocTypeEnum.Todo]) { CosmosDocTodo d = (dynamic)item; if (d.IUD == (byte)DocStateMarkEnum.Insert) { await TodosCosmos.LocalFunctions.NotifyAdmin("Insert todo " + d.UserID + " " + d.Name, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("Insert todo Id " + d.ID + ", name - " + d.Name); } else if (d.IUD == (byte)DocStateMarkEnum.Update) { await TodosCosmos.LocalFunctions.NotifyAdmin("Update todo " + d.UserID + " " + d.Name, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("Update todo Id " + d.ID + ", name - " + d.Name); } else if (d.IUD == (byte)DocStateMarkEnum.Delete) { await TodosCosmos.LocalFunctions.NotifyAdmin("Delete todo " + d.UserID + " " + d.Name, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("Delete todo Id " + d.ID + ", name - " + d.Name); LocalFunctions.SoftDeleteDoc(item); } } //process categories foreach (var item in dict[DocTypeEnum.Category]) { CosmosDocCategory d = (dynamic)item; if (d.IUD == (byte)DocStateMarkEnum.Insert) { await TodosCosmos.LocalFunctions.NotifyAdmin("Insert category " + d.UserID + " " + d.Name, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("insert category Id " + d.ID + ", name - " + d.Name); } else if (d.IUD == (byte)DocStateMarkEnum.Update) { await TodosCosmos.LocalFunctions.NotifyAdmin("Update category " + d.UserID + " " + d.Name, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("update category Id " + d.ID + ", name - " + d.Name); } else if (d.IUD == (byte)DocStateMarkEnum.Delete) { await TodosCosmos.LocalFunctions.NotifyAdmin("Delete category " + d.UserID + " " + d.Name, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("delete category Id " + d.ID + ", name - " + d.Name); LocalFunctions.SoftDeleteDoc(item); } } //process feedbacks foreach (var item in dict[DocTypeEnum.Feedback]) { CosmosDocFeedback d = (dynamic)item; if (d.IUD == (byte)DocStateMarkEnum.Insert) { await TodosCosmos.LocalFunctions.NotifyAdmin("Insert Feedback " + d.UserID + " " + d.Text, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("insert Feedback Id " + d.ID + ", name - " + d.Text); } else if (d.IUD == (byte)DocStateMarkEnum.Update) { await TodosCosmos.LocalFunctions.NotifyAdmin("Update Feedback " + d.UserID + " " + d.Text, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("update Feedback Id " + d.ID + ", name - " + d.Text); } else if (d.IUD == (byte)DocStateMarkEnum.Delete) { await TodosCosmos.LocalFunctions.NotifyAdmin("Delete Feedback " + d.UserID + " " + d.Text, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("delete Feedback Id " + d.ID + ", name - " + d.Text); LocalFunctions.SoftDeleteDoc(item); } } //process reactions foreach (var item in dict[DocTypeEnum.Reaction]) { CosmosDocReaction d = (dynamic)item; if (d.IUD == (byte)DocStateMarkEnum.Insert) { await TodosCosmos.LocalFunctions.NotifyAdmin("Insert Reaction " + d.UserID + " " + d.LikeOrDislike, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("insert reaction Id " + d.ID + ", LikeOrDislike - " + d.LikeOrDislike); } else if (d.IUD == (byte)DocStateMarkEnum.Update) { await TodosCosmos.LocalFunctions.NotifyAdmin("Update Reaction " + d.UserID + " " + d.LikeOrDislike, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("update reaction Id " + d.ID + ", LikeOrDislike - " + d.LikeOrDislike); } else if (d.IUD == (byte)DocStateMarkEnum.Delete) { await TodosCosmos.LocalFunctions.NotifyAdmin("Delete Reaction " + d.UserID + " " + d.LikeOrDislike, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("delete reaction Id " + d.ID + ", LikeOrDislike - " + d.LikeOrDislike); LocalFunctions.SoftDeleteDoc(item); } } //process users foreach (var item in dict[DocTypeEnum.User]) { CosmosDocUser d = (dynamic)item; if (d.IUD == (byte)DocStateMarkEnum.Insert) { await TodosCosmos.LocalFunctions.NotifyAdmin("Insert user " + d.FullName, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("insert user Id " + d.ID + ", name - " + d.FullName); } else if (d.IUD == (byte)DocStateMarkEnum.Update) { // await TodosCosmos.LocalFunctions.NotifyAdmin("Update user " + d.FullName, TodosCosmos.LocalFunctions.AddThisCaller(new List<string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("update user Id " + d.ID + ", name - " + d.FullName); } else if (d.IUD == (byte)DocStateMarkEnum.Delete) { await TodosCosmos.LocalFunctions.NotifyAdmin("Delete user " + d.FullName, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("delete user Id " + d.ID + ", name - " + d.FullName); LocalFunctions.SoftDeleteDoc(item); } } //process FeedMessages foreach (var item in dict[DocTypeEnum.FeedMessage]) { CosmosDocFeedMessage d = (dynamic)item; if (d.IUD == (byte)DocStateMarkEnum.Insert) { RequestedActionEnum r = (RequestedActionEnum)d.RequestedAction; switch (r) { case RequestedActionEnum.SendEmail: break; case RequestedActionEnum.SendSMS: break; case RequestedActionEnum.NotifyAdmin: await TodosCosmos.LocalFunctions.NotifyAdmin(d.Bag, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TodosCosmos.LocalFunctions.ConsolePrint("feed action notifyAdmin - " + d.Bag); break; case RequestedActionEnum.UpdateStat: break; default: break; } LocalFunctions.SoftDeleteDoc(item); } } }
public async Task <ActionResult <TSFeedback> > Add( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "feedback/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())); TSFeedback tsFeedback = await MyFromBody <TSFeedback> .FromBody(req, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); tsFeedback.UserID = Guid.Parse(LocalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()))); await CosmosAPI.cosmosDBClientActivity.AddActivityLog(tsFeedback.UserID, "Add or update Feedback", 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 (!tsFeedback.UserID.Equals(Guid.Empty)) { if (userName.Equals("demouser")) { return(new TSFeedback()); } } CosmosDocFeedback oldFeedback = await CosmosAPI.cosmosDBClientFeedback.FindFeedback(tsFeedback.UserID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (oldFeedback is null) { tsFeedback.ID = Guid.NewGuid(); tsFeedback.AddDate = DateTime.UtcNow; bool b = await CosmosAPI.cosmosDBClientFeedback.AddFeedback(tsFeedback, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (b) { await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "FeedbackCount", true, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); } } else { if (oldFeedback.Text != tsFeedback.Text) { await CosmosAPI.cosmosDBClientFeedback.UpdateFeedback(tsFeedback, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); } } CosmosDocFeedback feedbackDoc = await CosmosAPI.cosmosDBClientFeedback.FindFeedback(tsFeedback.UserID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (feedbackDoc != null) { return(feedbackDoc.toTSFeedback()); } else { return(new TSFeedback()); } }
public async Task <bool> UpdateFeedbackEntity(CosmosDocFeedback tsFeedback, List <string> CallTrace) { return(await cosmosDBClientBase.UpdateItemAsync(tsFeedback, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod()))); }