Beispiel #1
0
        public async Task <IActionResult> GetDepartmentsByCompany(Guid companyId)
        {
            var cmd    = new GetDepartmentsByCompanyIdQuery(companyId);
            var result = await _mediator.Send(cmd);

            return(Ok(result));
        }
Beispiel #2
0
        public async Task <IEnumerable <DepartmentReadDTO> > Handle(GetDepartmentsByCompanyIdQuery request, CancellationToken cancellationToken)
        {
            _logger.LogInformation("Call to GetDepartmentsByCompanyIdHandler made to add department record");
            using (var session = await _context.Client.StartSessionAsync())
            {
                try
                {
                    session.StartTransaction();
                    var companyId = request.CompanyId;
                    List <DepartmentReadDTO> models = new List <DepartmentReadDTO>();
                    var filter = Builders <Department> .Filter.Eq("CompanyId", companyId);

                    var results = await this._context.Departments.Find <Department>(session, filter).ToListAsync();

                    foreach (var item in results)
                    {
                        var filter_department = Builders <Staff> .Filter.Eq("DepartmentId", item.Id);

                        var result_departments = await this._context.Staffs.Find <Staff>(session, filter_department).ToListAsync();

                        var modelDTO = _mapper.Map <DepartmentReadDTO>(item);
                        models.Add(modelDTO);

                        modelDTO.Staffs = new List <StaffReadDTO>();
                        foreach (var dep in result_departments)
                        {
                            var dep_model = _mapper.Map <StaffReadDTO>(dep);
                            modelDTO.Staffs.Add(dep_model);
                        }
                    }

                    await session.CommitTransactionAsync();

                    _logger.LogInformation("Call to GetDepartmentsByCompanyIdHandler completed.");
                    return(models);
                }
                catch (Exception ex)
                {
                    await session.AbortTransactionAsync();

                    _logger.LogInformation("Error fetching departments.");
                    throw new Exception("Error fetching departments.");
                }
            }
        }