Exemplo n.º 1
0
        public async Task <IList <Activity> > GetActivityByCaseID(long id)
        {
            var mapper = new CaseMapper();

            var param = new DynamicParameters();

            param.Add("@ID", id);

            return((await SqlMapper.QueryAsync(_unitOfWork.Connection,
                                               "GetActivityByCaseID",
                                               new[]
            {
                typeof(Activity),
                typeof(Officer),
                typeof(Attachment),
                typeof(Letter),
                typeof(Email),
            },
                                               obj =>
            {
                return mapper.MapActivity(obj[0] as Activity,
                                          obj[1] as Officer,
                                          obj[2] as Attachment,
                                          obj[3] as Letter,
                                          obj[4] as Email);
            },
                                               param,
                                               splitOn: "userID,activityAttachmentID,letterID,emailID",
                                               commandType: CommandType.StoredProcedure,
                                               transaction: _unitOfWork.Transaction)).Distinct().ToList());
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 6
0
        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()));
        }
Exemplo n.º 7
0
        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());
        }
 public CaseMapperTests()
 {
     _sut = new CaseMapper();
 }