private static void Main(string[] args) { var authority = "https://login.microsoftonline.com/common/"; var authenticationContext = new AuthenticationContext(authority, new TokenCache()); var result = authenticationContext.AcquireTokenAsync( "https://api.support.microsoft.com", "ad9a38dc-2fa5-4863-9557-4f9b4a23e44b", new Uri("https://casebuddy.microsoft.com"), new PlatformParameters(PromptBehavior.Always), new UserIdentifier("*****@*****.**", UserIdentifierType.OptionalDisplayableId)).Result; var x = authenticationContext.TokenCache.Serialize(); var str = Convert.ToBase64String(x); using (var client = new WebClient { Headers = { ["Content-Type"] = "application/json", ["Authorization"] = $"Bearer {result.AccessToken}", ["cache-control"] = "no-cache" } }) { var data = JsonConvert.SerializeObject(QueryMakeQuery("*****@*****.**")); var response = client.UploadData("https://api.support.microsoft.com/v0/queryidresult", "POST", Encoding.UTF8.GetBytes(data)); var res = JsonConvert.DeserializeObject <Welcome>(Encoding.UTF8.GetString(response)); var tParam = res.TableParameters.Single(); foreach (var @case in Enumerable.Range(0, tParam.RowCount). Select(index => CaseMapper.Map(tParam.HeaderNames, res.TableParameters.First().TableParameterResult[index]))) { CaseStorage.AddCase(@case); } } }
public async Task <Case> GetCaseByIdAsync(int caseId) { try { Cases dbCase = await _context.Cases .Include(c => c.Appointments) .Include(c => c.Casenotes) .Include(c => c.Currentstatus) .Include(c => c.Activeconsultant) .ThenInclude(u => u.UserroleNavigation) .FirstOrDefaultAsync(c => c.Caseid == caseId); if (dbCase == null) { return(null); } Case aCase = CaseMapper.Map(dbCase); List <Caseclient> caseClients = _context.Caseclient.Where(cc => cc.Caseid == caseId).ToList(); foreach (Caseclient cc in caseClients) { Users dbUser = await _context.Users.FirstOrDefaultAsync(u => u.Rowid == cc.Clientid); _context.Entry(dbUser).Reference(u => u.UserroleNavigation).Load(); aCase.Clients.Add(UserMapper.Map(dbUser)); } return(aCase); } catch (Exception e) { return(null); } }
public async Task <Model.Case> GetByID(long id) { var mapper = new CaseMapper(); var param = new DynamicParameters(); param.Add("@ID", id); return((await SqlMapper.QueryAsync(_unitOfWork.Connection, "GetCaseByID", new[] { typeof(Model.Case), typeof(Offender), typeof(ContactInfo), typeof(Officer), typeof(Officer), typeof(Person), typeof(ContactInfo), typeof(Master), typeof(Master), typeof(Attachment), typeof(Certificate), typeof(Premise), typeof(SanctionInfo), }, obj => { return mapper.Map(obj[0] as Model.Case, obj[1] as Offender, obj[2] as ContactInfo, obj[3] as Officer, obj[4] as Officer, obj[5] as Person, obj[6] as ContactInfo, obj[7] as Master, obj[8] as Master, obj[9] as Attachment, obj[10] as Certificate, obj[11] as Premise, obj[12] as SanctionInfo); }, param, splitOn: "offenderID,offenderContactID,managedByID,assignedToID,reporterID,contactID,breachID," + "offences,attachmentID,certificateID,premiseID,sanctionInfoID", commandType: CommandType.StoredProcedure, transaction: _unitOfWork.Transaction)).Distinct().FirstOrDefault()); }
// NOTE: AddCaseAsync isnt able to delay saving due to needing to query the db in order to get the id, // which is accomplished by saving public async Task <bool> AddCaseAsync(Case targetCase, bool save = true) { try { // Add the case Cases dbCase = _context.Cases.Add(CaseMapper.Map(targetCase)).Entity; await _context.SaveChangesAsync(); // Next, add the caseclient entry for every client foreach (User user in targetCase.Clients) { Caseclient dbCaseclient = _context.Caseclient.Add(new Caseclient { Caseid = dbCase.Caseid, Clientid = user.Id }).Entity; user.Cases.Add(targetCase); await _user.UpdateUserAsync(user, false); dbCase.Caseclient.Add(dbCaseclient); } // Next, add all of the case's appointments, if any foreach (Appointment a in targetCase.Appointments) { await _appointment.AddAppointmentToCaseAsync(targetCase, a, false); } // Finally, add all of the case's notes, if any foreach (Note cn in targetCase.Notes) { await _note.AddNoteToCaseAsync(targetCase, cn, false); } if (save) { await _context.SaveChangesAsync(); } return(true); } catch (Exception e) { return(false); } }
public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { var by = Convert.FromBase64String( "AwAAAAEAAACOAWh0dHBzOi8vbG9naW4ud2luZG93cy5uZXQvNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3Lzo6Omh0dHBzOi8vYXBpLnN1cHBvcnQubWljcm9zb2Z0LmNvbTo6OmFkOWEzOGRjLTJmYTUtNDg2My05NTU3LTRmOWI0YTIzZTQ0Yjo6OjDrInsiUmF3Q2xpZW50SW5mbyI6ImV5SjFhV1FpT2lKa1pEVm1PV1k0TXkwd1pqVm1MVFEyWXpNdFlqYzBNUzAwWlRJNVpUVTVOVGMwTXpjaUxDSjFkR2xrSWpvaU56Sm1PVGc0WW1ZdE9EWm1NUzAwTVdGbUxUa3hZV0l0TW1RM1kyUXdNVEZrWWpRM0luMCIsIlJlZnJlc2hUb2tlbiI6IkFRQUJBQUFBQUFEQ29NcGpKWHJ4VHE5Vkc5dGUtN0ZYZ3lnbGZ5N2piLVZiLU1fX1YxVXN6VVNHaEJhMzV4NlJQeVhLTTJMaWw3bTFJMGh6akNQakVqaHRYMHpBV2ktSUdWYmtxNk83Z2k5T3BHd3l4Nl9WVzJfVi10eWxuS3UyaHlfbV9Td0k2NExVNWlwMFVFdHU0aEJlUzQzbUI4YTBYNEZlM3cxZThtV3dmclctTXdyQ1E3bTZ0eTVKLUNxQmN1S2dpMjkwZ1RHcFItOTJkRTVOVDlUN2N1LXV3djRabl9QVjB6al9JSmQ3TEl2d01kVnBWMHptcTlVZW93ck9CYjJkM2RmaC1YdzNxYVNCQ3d0TmtwbjJSek1mTTVweUV5SmxWYWVGanI3bXFTaG9CR1JjVjEzSVZWR0dhRUZJb1R1blU0SlJpZklmOThWVnM2TC1IUHBHQnFPZE8tVFRPTk1ZdGNFM0RqX3BEX2c5MUstbHpNRG1yaXN0M1U5ZnV1UVBmNktGankxTFhLS3J4VE5SWjlJQUl4Q2dwdTdQYjZEam9hWmoxM0VhNjVTR2FQU2tkSXhLZERUNWpmMHFqZElxa0ZYUUNRQ0x3bXp6ZHZfRzlDZHNEbnpvNzNjaTI0clJQNU5SbUYxWV92LXNkUlhmMnFjcXBBUmtKMXZ4STdlNHctTzJmdE5SZkp4LUtrVVI4VnlEWjltZ1FKZzNiZEZvQVc1eFdJeFI5blpmM0VXeUNpeGJfbGt5Tm5haEJ5S3VwM0tjS0dRS1k2bjUyMUNWUXBJNC0wYlJIbnJKZV9Jdk1KaF9PT0dOdnpwZFVaTV9FWkp3QTg0X29FM2hrUEQ4U3hEcnNoZDZPZ0FpY2c4UDIxc2V1V1ljMjExYXphT20xSmpZZ0xDNXFOQWcydjNUZFRGN1A5UEgzWmVUMU9Kbl9BRUgzbTFIU281TTBpMlhoY2t4UmRrWHcxZ0Mya2MxMEk0MFMybHFJWTVtZUdKX3cwajVtdFpZb1F1WHhqbGoxeURKbk9KV3FHd3RlSXlOVVUyNTBDSUhvMnBCSUZuR3RUdHpoZlZ6M09YVVFTSVFQRDZaRkFpYVVLT19qN1dhSHdiT2VMaEFnX3RRRHJUU0JobFhZdnBrX05WM1JOMmZOZ09FY2h0Y1BTSWF0cnNRdWotTm5lMUxnTzlRWkVveHZvekswNzhNQW9INElnakp2ZU93TUxmdzJCX1hsd0tZYlBSLTZ6Zmp3ZDNDRVYyX1B1bnBuUUVtdTlhUXRxbjhROHhhQTllVHE0bkJvX0paZnllR2RVNmFlQ0hxQ2ZVM1FROWozRU9wZzFOVGZhVS1VV1ppc1ZOblA3YkE0eG02Z2JhM2lMRXJ3ZEtaYkNWUjBXUGZMZWZPTmNMT1hWd0NuOGpaeHhWeTNnSUFQaU10bUZZNGg0bWhHVFROV0k1S1VSR3hyVS1GbmptUm00ZGZFUm90OFl1UmtyOXFBZHVOdXNZNGpadnlDamxpajN3blFMNk5xeEw1ZjJqR0owNmVYVTQzeDNLU0dXbnJKZ1F0eUVxZ3N1b1VWa2h0QmlYMmNoRy1JcUZ4MkR2LVBEY3kxaUFBIiwiUmVzb3VyY2VJblJlc3BvbnNlIjoiaHR0cHM6XC9cL2FwaS5zdXBwb3J0Lm1pY3Jvc29mdC5jb20iLCJSZXN1bHQiOnsiQWNjZXNzVG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpTVXpJMU5pSXNJbmcxZENJNklraENlR3c1YlVGbE5tZDRZWFpEYTJOdlQxVXlWRWh6UkU1aE1DSXNJbXRwWkNJNklraENlR3c1YlVGbE5tZDRZWFpEYTJOdlQxVXlWRWh6UkU1aE1DSjkuZXlKaGRXUWlPaUpvZEhSd2N6b3ZMMkZ3YVM1emRYQndiM0owTG0xcFkzSnZjMjltZEM1amIyMGlMQ0pwYzNNaU9pSm9kSFJ3Y3pvdkwzTjBjeTUzYVc1a2IzZHpMbTVsZEM4M01tWTVPRGhpWmkwNE5tWXhMVFF4WVdZdE9URmhZaTB5WkRkalpEQXhNV1JpTkRjdklpd2lhV0YwSWpveE5UVTVOalkwTkRRNExDSnVZbVlpT2pFMU5UazJOalEwTkRnc0ltVjRjQ0k2TVRVMU9UWTJPRE0wT0N3aVlXTnlJam9pTVNJc0ltRnBieUk2SWtGV1VVRnhMemhNUVVGQlFXSnJUVVpaSzNJMUx5OUtRVFJsVFZoSGIxRnlkbFJ4YTNoTlMyMWpjRmRoUWtwUVdqWkdjVEpQY2xGU1dFeFFVbkl3U1RkbmNHWlNibVkzTVRsWVdIZFZkbGhwUTBGUVQzSnNTbmhJY1hkb1JEWmtTREozSzNSTFVpOUZVM2hsZVZKU1VFRklNVEZCUjFkVlBTSXNJbUZ0Y2lJNld5SndkMlFpTENKeWMyRWlMQ0p0Wm1FaVhTd2lZWEJ3YVdRaU9pSmhaRGxoTXpoa1l5MHlabUUxTFRRNE5qTXRPVFUxTnkwMFpqbGlOR0V5TTJVME5HSWlMQ0poY0hCcFpHRmpjaUk2SWpBaUxDSmtaWFpwWTJWcFpDSTZJamd4TjJFek5EUXhMVEkzT0RjdE5EVmxOeTA0WWpNM0xXVXhaalZtT0RBMU9HVTFPQ0lzSW1aaGJXbHNlVjl1WVcxbElqb2lVM1Z1WjNVaUxDSm5hWFpsYmw5dVlXMWxJam9pUlcxeVlXZ2lMQ0pwY0dGa1pISWlPaUl5Tnk0eE16Y3VNall1TmpNaUxDSnVZVzFsSWpvaVJXMXlZV2dnVTNWdVozVWlMQ0p2YVdRaU9pSmtaRFZtT1dZNE15MHdaalZtTFRRMll6TXRZamMwTVMwMFpUSTVaVFU1TlRjME16Y2lMQ0p2Ym5CeVpXMWZjMmxrSWpvaVV5MHhMVFV0TWpFdE1qRTBOamMzTXpBNE5TMDVNRE16TmpNeU9EVXROekU1TXpRME56QTNMVEkwTmpjMU9UY2lMQ0p6WTNBaU9pSjFjMlZ5WDJsdGNHVnljMjl1WVhScGIyNGlMQ0p6ZFdJaU9pSTJSRmt0YTNZM0xVRnFhREJTWTJRd1VuQkhOVEJRTUZaak5IbENkR3hYVjBoWWJrbDNiRmxZU1d4Rklpd2lkR2xrSWpvaU56Sm1PVGc0WW1ZdE9EWm1NUzAwTVdGbUxUa3hZV0l0TW1RM1kyUXdNVEZrWWpRM0lpd2lkVzVwY1hWbFgyNWhiV1VpT2lKb1lYTjFibWQxUUcxcFkzSnZjMjltZEM1amIyMGlMQ0oxY0c0aU9pSm9ZWE4xYm1kMVFHMXBZM0p2YzI5bWRDNWpiMjBpTENKMWRHa2lPaUpMWTBaR01tWlZhMVJGY1ZWc1MyTnVlREpqUVVGQklpd2lkbVZ5SWpvaU1TNHdJbjAud2dmV0hjaTc0OEdEeEdmejl3clBUVmoxUXp6TWd0R1dKRmRfLU5uZERmQ2Z0eFdpUzVDUFRZNDAyQ3BFSDZIOXliOG1uOENSOEVlRW4wSFQzalpJSnlEcU9XaTQzTkVTTDRZXzYxSXRSdUFIOW5Sckc1N01Lcmt5ajF2cXVsUWUxbUw4U0pMdmc0TTAwc2tKanNTckV3UUNJems4S2VOZEdsS2R6N3RwSmx5VnRZV1R4QXp0WUZKSnpPVGc5OE9SNURlYW01VC1YNzZoNThpU3dwSnBvWVdxSFpIeVFmbXNSLXl0WmRkUzhXbE85VzBRQzV6Q05sQ0FOWlF6THU4ZEtNMERsV2k0WFJxN3RqSFVzZWlRdkVBa1NPejgzUUpoSXRmNU13UXBsZGN3bG1XSmxubDlGRG9rYmM0RFQtd1VrNEpheXZLV0FZZkJBMEt3VC01Q3VnIiwiQWNjZXNzVG9rZW5UeXBlIjoiQmVhcmVyIiwiRXhwaXJlc09uIjp7IkRhdGVUaW1lIjoiXC9EYXRlKDE1NTk2NjgzNDczMjgpXC8iLCJPZmZzZXRNaW51dGVzIjowfSwiRXh0ZW5kZWRFeHBpcmVzT24iOnsiRGF0ZVRpbWUiOiJcL0RhdGUoMTU1OTY2ODM0NzMyOClcLyIsIk9mZnNldE1pbnV0ZXMiOjB9LCJFeHRlbmRlZExpZmVUaW1lVG9rZW4iOmZhbHNlLCJJZFRva2VuIjoiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKdWIyNWxJbjAuZXlKaGRXUWlPaUpoWkRsaE16aGtZeTB5Wm1FMUxUUTROak10T1RVMU55MDBaamxpTkdFeU0yVTBOR0lpTENKcGMzTWlPaUpvZEhSd2N6b3ZMM04wY3k1M2FXNWtiM2R6TG01bGRDODNNbVk1T0RoaVppMDRObVl4TFRReFlXWXRPVEZoWWkweVpEZGpaREF4TVdSaU5EY3ZJaXdpYVdGMElqb3hOVFU1TmpZME5EUTRMQ0p1WW1ZaU9qRTFOVGsyTmpRME5EZ3NJbVY0Y0NJNk1UVTFPVFkyT0RNME9Dd2lZVzF5SWpwYkluQjNaQ0lzSW5KellTSXNJbTFtWVNKZExDSm1ZVzFwYkhsZmJtRnRaU0k2SWxOMWJtZDFJaXdpWjJsMlpXNWZibUZ0WlNJNklrVnRjbUZvSWl3aWFYQmhaR1J5SWpvaU1qY3VNVE0zTGpJMkxqWXpJaXdpYm1GdFpTSTZJa1Z0Y21Gb0lGTjFibWQxSWl3aWIybGtJam9pWkdRMVpqbG1PRE10TUdZMVppMDBObU16TFdJM05ERXROR1V5T1dVMU9UVTNORE0zSWl3aWIyNXdjbVZ0WDNOcFpDSTZJbE10TVMwMUxUSXhMVEl4TkRZM056TXdPRFV0T1RBek16WXpNamcxTFRjeE9UTTBORGN3TnkweU5EWTNOVGszSWl3aWMzVmlJam9pZFdwb2FYbENaV2RMZEVVNFNVVkdURTlVVGpFM1kyZG1abE42ZEd0VlQxZE5RbmRvZHpGSE1UVkdXU0lzSW5ScFpDSTZJamN5WmprNE9HSm1MVGcyWmpFdE5ERmhaaTA1TVdGaUxUSmtOMk5rTURFeFpHSTBOeUlzSW5WdWFYRjFaVjl1WVcxbElqb2lhR0Z6ZFc1bmRVQnRhV055YjNOdlpuUXVZMjl0SWl3aWRYQnVJam9pYUdGemRXNW5kVUJ0YVdOeWIzTnZablF1WTI5dElpd2lkbVZ5SWpvaU1TNHdJbjAuIiwiVGVuYW50SWQiOiI3MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDciLCJVc2VySW5mbyI6eyJEaXNwbGF5YWJsZUlkIjoiaGFzdW5ndUBtaWNyb3NvZnQuY29tIiwiRmFtaWx5TmFtZSI6IlN1bmd1IiwiR2l2ZW5OYW1lIjoiRW1yYWgiLCJJZGVudGl0eVByb3ZpZGVyIjoiaHR0cHM6XC9cL3N0cy53aW5kb3dzLm5ldFwvNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3XC8iLCJQYXNzd29yZENoYW5nZVVybCI6bnVsbCwiUGFzc3dvcmRFeHBpcmVzT24iOm51bGwsIlVuaXF1ZUlkIjoiZGQ1ZjlmODMtMGY1Zi00NmMzLWI3NDEtNGUyOWU1OTU3NDM3In19LCJVc2VyQXNzZXJ0aW9uSGFzaCI6bnVsbH0="); var to = new TokenCache(by); var authority = "https://login.microsoftonline.com/common/"; var authenticationContext = new AuthenticationContext(authority, to); var result = authenticationContext.AcquireTokenAsync( "https://api.support.microsoft.com", "ad9a38dc-2fa5-4863-9557-4f9b4a23e44b", new Uri("https://casebuddy.microsoft.com"), new PlatformParameters(PromptBehavior.Auto, new Ui()), new UserIdentifier("*****@*****.**", UserIdentifierType.OptionalDisplayableId)).Result; var hashset = new HashSet <string>(); using (var client = new WebClient { Headers = { ["Content-Type"] = "application/json", ["Authorization"] = $"Bearer {result.AccessToken}", ["cache-control"] = "no-cache" } }) { var jsondata = JsonConvert.SerializeObject(QueryMakeQuery("*****@*****.**")); var response = client.UploadData("https://api.support.microsoft.com/v0/queryidresult", "POST", Encoding.UTF8.GetBytes(jsondata)); var res = JsonConvert.DeserializeObject <Welcome>(Encoding.UTF8.GetString(response)); var tParam = res.TableParameters.Single(); foreach (var @case in Enumerable.Range(0, tParam.RowCount). Select(index => CaseMapper.Map(tParam.HeaderNames, res.TableParameters.First().TableParameterResult[index]))) { hashset.Add(@case.CaseNumber); } } log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}"); return(new OkObjectResult(hashset.OrderBy(x => x).Last())); }
public async Task <IEnumerable <Model.Case> > Select(CaseOptions options) { var mapper = new CaseMapper(); var assignedToTable = new DataTable(); var managedByTable = new DataTable(); var offenceTypeTable = new DataTable(); var statusTable = new DataTable(); assignedToTable.Columns.Add("Val", typeof(Guid)); managedByTable.Columns.Add("Val", typeof(Guid)); offenceTypeTable.Columns.Add("Val", typeof(Guid)); statusTable.Columns.Add("Val", typeof(long)); if (options.AssignedTo?.Any() ?? false) { foreach (var assignedTo in options.AssignedTo) { assignedToTable.Rows.Add(assignedTo); } } if (options.ManagedBy?.Any() ?? false) { foreach (var managedBy in options.ManagedBy) { managedByTable.Rows.Add(managedBy); } } if (options.OffenceType?.Any() ?? false) { foreach (var offenceType in options.OffenceType) { offenceTypeTable.Rows.Add(offenceType); } } if (options.Status?.Any() ?? false) { foreach (var statustype in options.Status) { statusTable.Rows.Add(statustype); } } var param = new DynamicParameters(); param.Add("@ID", options.ID); param.Add("@OffenceType", offenceTypeTable.AsTableValuedParameter("dbo.UniqueIdentifierType")); param.Add("@Source", options.Source); param.Add("@ManagedBy", managedByTable.AsTableValuedParameter("dbo.UniqueIdentifierType")); param.Add("@AssignedTO", assignedToTable.AsTableValuedParameter("dbo.UniqueIdentifierType")); param.Add("@Status", statusTable.AsTableValuedParameter("dbo.BigIntType")); param.Add("@From", options.From); param.Add("@To", options.To); return((await SqlMapper.QueryAsync(_unitOfWork.Connection, "SelectCase", new[] { typeof(Model.Case), typeof(Officer), typeof(Officer), typeof(Person), typeof(Master), typeof(Master), typeof(Offender), }, obj => { return mapper.Map(obj[0] as Model.Case, obj[6] as Offender, null, obj[1] as Officer, obj[2] as Officer, obj[3] as Person, null, obj[4] as Master, obj[5] as Master); }, param, splitOn: "managedByID,assignedToID,reporterID,breachID,offences,offenderID", commandType: CommandType.StoredProcedure, transaction: _unitOfWork.Transaction)).Distinct()); }