private List <Employee> GenerateFakeEmployees(int employeesToGenerate)
        {
            var userGenerator = new EmployeeDataGenerator <Employee>(employeesToGenerate);
            var managers      = new Dictionary <string, Manager>();
            var employees     = new List <Employee>();


            foreach (var emp in userGenerator.Employees)
            {
                if (!managers.ContainsKey(emp.Department))
                {
                    var manager = new Manager
                    {
                        Id         = emp.Id,
                        FirstName  = emp.FirstName,
                        LastName   = emp.LastName,
                        Department = emp.Department,
                        DoB        = emp.DoB,
                        JobTitle   = JobTitles.Manager
                    };
                    managers.Add(manager.Department, manager);
                    employees.Add(manager);
                }
                else
                {
                    employees.Add(emp);
                    managers[emp.Department].Employees.Add(emp.Id);
                    var empNotes = userGenerator.GenerateNotes(4, emp.Id);
                    managers[emp.Department].EmployeeNotes.AddRange(empNotes);
                }
            }

            return(employees);
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(
                 AuthorizationLevel.Anonymous,
                 "post", Route = null)] HttpRequest request,
            IBinder binder,
            ILogger log)
        {
            GenerateBogusDataFileRequest requestData;

            try
            {
                string requestBody = await new StreamReader(request.Body).ReadToEndAsync();
                requestData =
                    JsonConvert.DeserializeObject <GenerateBogusDataFileRequest>(
                        requestBody,
                        new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });
            }
            catch (Exception e)
            {
                return(new BadRequestObjectResult(e.Message));
            };

            var data = EmployeeDataGenerator.GenerateData(requestData.SampleSize);

            using (var fileStream = await binder.BindAsync <TextWriter>(
                       new BlobAttribute(
                           $"file-drop/{requestData.FileName}.json",
                           FileAccess.Write)
            {
                Connection = "AzureWebJobsStorage"
            }))
            {
                fileStream.Write(
                    JsonConvert.SerializeObject(
                        data,
                        Formatting.Indented,
                        new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                }));
            }

            return(new OkObjectResult($"File created with {data.Count} records with name {requestData.FileName}.json"));
        }