コード例 #1
0
ファイル: SectionService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// returns all sections in the database
        /// </summary>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <SectionDto> > > GetAllSections()
        {
            var response = new AlpApiResponse <List <SectionDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetAllSections)
                }.ToString());

                var sections = await _context.Section.AsNoTracking()
                               .Include(section => section.Floor)
                               .Include(section => section.Department)
                               .ToListAsync();

                response.Value = sections.Select(Section => Section.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #2
0
        /// <summary>
        /// updates a itemnature by dto
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> UpdateItemNature(ItemNatureDto dto)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(UpdateItemNature),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                var updatedEntity = await _context.ItemNature.FirstOrDefaultAsync(itemNature => itemNature.ItemNatureId == dto.Id);

                updatedEntity.UpdateEntityByDto(dto);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #3
0
        /// <summary>
        /// gets all floors from database
        /// </summary>
        /// <returns></returns>
        public async Task <AlpApiResponse> DeleteItemNatureById(int itemNatureId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(DeleteItemNatureById),
                    itemNatureId
                }.ToString());

                var entity = await _context.ItemNature.FirstOrDefaultAsync(itemNature => itemNature.ItemNatureId == itemNatureId);

                _context.ItemNature.Remove(entity);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #4
0
ファイル: DepartmentService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// updates a department by dto
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> UpdateDepartment(DepartmentDto dto)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(UpdateDepartment),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                var updatedEntity = await _context.Department.Include(department => department.Employee).FirstOrDefaultAsync(Department => Department.DepartmentId == dto.Id);

                updatedEntity.UpdateEntityByDto(dto);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Success = false;
                response.Message = e.Message;
            }

            return(response);
        }
コード例 #5
0
ファイル: FloorService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// gets nonlocked floors
        /// </summary>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <FloorDto> > > GetAvailableFloors()
        {
            var response = new AlpApiResponse <List <FloorDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetAvailableFloors)
                }.ToString());

                var floors = await _context.Floor.AsNoTracking().Include(floor => floor.Building).Where(floor => !floor.Locked).ToListAsync();

                response.Value = floors.Select(floor => floor.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #6
0
ファイル: BuildingService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// gets a building by its id
        /// </summary>
        /// <param name="buildingId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <BuildingDto> > GetBuildingById(int buildingId)
        {
            var response = new AlpApiResponse <BuildingDto>();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetBuildingById),
                    buildingId
                }.ToString());

                var entity = await _context.Building.Include(building => building.Location).FirstOrDefaultAsync(building => building.BuildingId == buildingId);

                response.Value = entity.EntityToDto();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #7
0
ファイル: BuildingService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// gets all the buldings from the database
        /// </summary>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <BuildingDto> > > GetAllBuildings()
        {
            var response = new AlpApiResponse <List <BuildingDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetAllBuildings)
                }.ToString());

                var buildings = await _context.Building.AsNoTracking().Include(building => building.Location).ToListAsync();

                response.Value = buildings.Select(building => building.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #8
0
ファイル: DepartmentService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// returns all departments in the database
        /// </summary>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <DepartmentDto> > > GetAllDepartments()
        {
            var response = new AlpApiResponse <List <DepartmentDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetAllDepartments)
                }.ToString());

                var departments = await _context.Department.AsNoTracking().Include(department => department.Employee).ToListAsync();

                response.Value = departments.Select(department => department.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Success = false;
                response.Message = e.Message;
            }

            return(response);
        }
コード例 #9
0
ファイル: EmployeeService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// gets all non retured employees
        /// </summary>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <EmployeeDto> > > GetAvailableEmployees()
        {
            var response = new AlpApiResponse <List <EmployeeDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetAllEmployees)
                }.ToString());

                var employees = await _context.Employee.AsNoTracking()
                                .Include(employee => employee.Department)
                                .Include(employee => employee.Section)
                                .Where(employee => employee.RetirementDate == null)
                                .ToListAsync();

                response.Value = employees.Select(employee => employee.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #10
0
        /// <summary>
        /// gets a floors without locks
        /// </summary>
        /// <param name="floorId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <ItemNatureDto> > > GetAvailableItemNatures()
        {
            var response = new AlpApiResponse <List <ItemNatureDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetAvailableItemNatures)
                }.ToString());

                var entites = await _context.ItemNature.AsNoTracking().Where(itemNature => !itemNature.Locked).ToListAsync();

                response.Value = entites.Select(e => e.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #11
0
        /// <summary>
        /// gets a floor by id
        /// </summary>
        /// <param name="floorId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <ItemNatureDto> > GetItemNatureById(int itemNatureId)
        {
            var response = new AlpApiResponse <ItemNatureDto>();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetItemNatureById),
                    itemNatureId
                }.ToString());

                var entity = await _context.ItemNature.FirstOrDefaultAsync(itemNature => itemNature.ItemNatureId == itemNatureId);

                response.Value = entity.EntityToDto();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #12
0
ファイル: OperationService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// queues the operation for later handling
        /// if the user is admin, it is immediately handled
        /// </summary>
        /// <param name="operationList"></param>
        /// <param name="sessionToken"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <ItemDto> > > QueueOperations(List <OperationDto> operationList, string sessionToken)
        {
            var response = new AlpApiResponse <List <ItemDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action        = nameof(QueueOperations),
                    operationList = operationList?.ToString()
                }.ToString());

                var roleType = _accountService.GetRoleTypeFromToken(sessionToken);
                response.Value = new List <ItemDto>();

                foreach (var dto in operationList)
                {
                    var entity = dto.DtoToEntity();
                    entity.DateOfCompletion = DateTime.Now;
                    await _context.Operation.AddAsync(entity);

                    await _context.SaveChangesAsync();

                    if (roleType == RoleType.Admin)
                    {
                        var result = await DoOperation(entity.OperationId);

                        if (!result.Success)
                        {
                            var item = await _context.Item.FirstOrDefaultAsync(i => i.ItemId == dto.ItemId);

                            if (item != null)
                            {
                                response.Value.Add(item.EntityToDto());
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #13
0
        /// <summary>
        /// change items owner to departmentchief
        /// </summary>
        /// <param name="itemId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> ChangeOwnerToDepartmentChief(int itemId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ChangeOwnerToDepartmentChief),
                    itemId
                }.ToString());

                var item = await _context.Item.Include(it => it.Department).FirstOrDefaultAsync(it => it.ItemId == itemId);

                if (item == null)
                {
                    response.Success = false;
                    response.Message = "A tárgy nem található az adatbázisban!";
                    return(response);
                }

                if (item.Department == null)
                {
                    response.Success = false;
                    response.Message = "A tárgy nincs osztályhoz rendelve, így nem lehet az osztályvezetőjére terhelni!";
                    return(response);
                }

                if (!item.Department.EmployeeId.HasValue)
                {
                    response.Success = false;
                    response.Message = "A választott osztálynak nincs tárolva az osztályvezetője!";
                    return(response);
                }

                item.EmployeeId = item.Department.EmployeeId;
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #14
0
ファイル: AccountService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// Logs the account out, destroying its sessiontoken
        /// </summary>
        /// <param name="encryptedSessionToken"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> Logout(string encryptedSessionToken)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(Logout)
                }.ToString());

                if (string.IsNullOrEmpty(encryptedSessionToken))
                {
                    response.Success = false;
                    response.Message = "Érvénytelen session Token!";
                    return(response);
                }

                var sessionData = _encryptionService.Decrypt <SessionTokenData>(encryptedSessionToken);
                if (sessionData == null)
                {
                    response.Success = false;
                    response.Message = "Sikertelen kijelentkezés!";
                    return(response);
                }

                var user = await _context.Account.FirstOrDefaultAsync(account => account.AccountId == sessionData.AccountId);

                if (user == null)
                {
                    response.Success = false;
                    response.Message = "Sikertelen kijelentkezés!";
                    return(response);
                }

                user.Token = string.Empty;
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #15
0
ファイル: BuildingService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// changes the lockstate of a building
        /// </summary>
        /// <param name="buildingId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> ToggleBuildingLockStateById(int buildingId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ToggleBuildingLockStateById),
                    buildingId
                }.ToString());

                var getByIdReply = await GetBuildingById(buildingId);

                if (!getByIdReply.Success)
                {
                    response.Success = getByIdReply.Success;
                    response.Message = getByIdReply.Message;
                    return(response);
                }

                var building = getByIdReply.Value;

                building.Locked = !building.Locked;

                var updateReply = await UpdateBuilding(building);

                if (!updateReply.Success)
                {
                    response.Success = updateReply.Success;
                    response.Message = updateReply.Message;
                    return(response);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #16
0
        /// <summary>
        /// change the itemnature state of floor
        /// </summary>
        /// <param name="floorId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> ToggleItemNatureLockStateById(int itemNatureId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ToggleItemNatureLockStateById),
                    itemNatureId
                }.ToString());

                var getByIdReply = await GetItemNatureById(itemNatureId);

                if (!getByIdReply.Success)
                {
                    response.Success = getByIdReply.Success;
                    response.Message = getByIdReply.Message;
                    return(response);
                }

                var itemNature = getByIdReply.Value;

                itemNature.Locked = !itemNature.Locked;
                var updateRespone = await UpdateItemNature(itemNature);

                if (!updateRespone.Success)
                {
                    response.Success = updateRespone.Success;
                    response.Message = updateRespone.Message;
                    return(response);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #17
0
        /// <summary>
        /// changes the locked state of a location
        /// </summary>
        /// <param name="locationId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> ToggleLocationLockStateById(int locationId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ToggleLocationLockStateById),
                    locationId
                }.ToString());

                var getByIdResponse = await GetLocationById(locationId);

                if (!getByIdResponse.Success)
                {
                    response.Success = getByIdResponse.Success;
                    response.Message = getByIdResponse.Message;
                    return(response);
                }

                var location = getByIdResponse.Value;

                location.Locked = !location.Locked;
                var updateResponse = await UpdateLocation(location);

                if (!updateResponse.Success)
                {
                    response.Success = updateResponse.Success;
                    response.Message = updateResponse.Message;
                    return(response);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #18
0
        /// <summary>
        /// adds a new item
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> AddNewItem(ItemDto dto)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(AddNewItem),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                await CheckIfDuplicateAsync(dto);

                var entity = dto.DtoToEntity();

                entity.Building   = null;
                entity.Floor      = null;
                entity.ItemNature = null;
                entity.ItemState  = null;
                entity.ItemType   = null;
                entity.Department = null;
                entity.Employee   = null;
                entity.Section    = null;

                entity.DateOfCreation = DateTime.Now;

                await _context.Item.AddAsync(entity);

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #19
0
        /// <summary>
        /// change items owner to payloadid
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="payLoadId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> ChangeOwner(int itemId, int?payLoadId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ChangeOwnerToDepartmentChief),
                    itemId
                }.ToString());

                var item = await _context.Item.Include(it => it.Department).FirstOrDefaultAsync(it => it.ItemId == itemId);

                if (item == null)
                {
                    response.Success = false;
                    response.Message = "A tárgy nem található az adatbázisban!";
                    return(response);
                }

                var employee = await _context.Employee.FirstOrDefaultAsync(emp => emp.EmployeeId == payLoadId);

                if (employee == null)
                {
                    response.Success = false;
                    response.Message = "Az munkavállaló nem található az adatbázisban!";
                    return(response);
                }

                item.EmployeeId = employee.EmployeeId;
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #20
0
ファイル: EmployeeService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// sets the retirement date of an employee to today
        /// </summary>
        /// <param name="employeeId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> RetireEmployee(int employeeId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(RetireEmployee),
                    employeeId
                }.ToString());

                var entity = await _context.Employee.FirstOrDefaultAsync(employee => employee.EmployeeId == employeeId);

                if (entity == null)
                {
                    response.Success = false;
                    response.Message = "Nem található a munkavállaló az adatbázisban";
                    return(response);
                }

                if (entity.RetirementDate != null)
                {
                    response.Success = false;
                    response.Message = "Ennek a munkavállalónak már megszűnt a munkaviszonya";
                    return(response);
                }

                entity.RetirementDate = DateTime.Now;

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #21
0
ファイル: DepartmentService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// changes the lockedstate of a department
        /// </summary>
        /// <param name="departmentId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> ToggleDepartmentLockStateById(int departmentId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ToggleDepartmentLockStateById),
                    departmentId
                }.ToString());

                var getByIdResponse = await GetDepartmentById(departmentId);

                if (!getByIdResponse.Success)
                {
                    response.Success = getByIdResponse.Success;
                    response.Message = getByIdResponse.Message;
                    return(response);
                }

                var department = getByIdResponse.Value;
                department.Locked = !department.Locked;
                var updateResponse = await UpdateDepartment(department);

                if (!updateResponse.Success)
                {
                    response.Success = updateResponse.Success;
                    response.Message = updateResponse.Message;
                    return(response);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Success = false;
                response.Message = e.Message;
            }

            return(response);
        }
コード例 #22
0
ファイル: EmployeeService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// checks if the employee is in the table
        /// if yes, updates it
        /// if no adds it
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> AddOrEditEmployee(EmployeeDto dto)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(AddOrEditEmployee),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                var oldEntity = await _context.Employee.FirstOrDefaultAsync(employee => employee.EmployeeId == dto.Id);

                if (oldEntity != null)
                {
                    oldEntity.UpdateEntityByDto(dto);
                    await _context.SaveChangesAsync();
                }
                else
                {
                    var entity = dto.DtoToEntity();
                    entity.Department = null;
                    entity.Section    = null;
                    await _context.Employee.AddAsync(entity);

                    await _context.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #23
0
ファイル: ItemTypeService.cs プロジェクト: amocsari/ALP
        public async Task <AlpApiResponse <ItemTypeDto> > InsertNewItemType(ItemTypeDto dto)
        {
            var response = new AlpApiResponse <ItemTypeDto>();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(InsertNewItemType),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                var itemNature = await _context.ItemNature.FirstOrDefaultAsync(itemN => itemN.ItemNatureId == dto.ItemNatureId);

                if (itemNature == null)
                {
                    throw new Exception("A típushoz tartozó eszköz jelleget kötelező megadni!");
                }

                var entity = dto.DtoToEntity();
                entity.ItemNature = null;
                await _context.ItemType.AddAsync(entity);

                await _context.SaveChangesAsync();

                response.Value = entity.EntityToDto();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #24
0
ファイル: EmployeeService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// returns the filtered employees depending onthe filterinfo
        /// </summary>
        /// <param name="filterInfo"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <EmployeeDto> > > FilterEmployees(EmployeeFilterInfo filterInfo)
        {
            var response = new AlpApiResponse <List <EmployeeDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(FilterEmployees),
                    info   = filterInfo?.ToString()
                }.ToString());

                var nameIsNull = string.IsNullOrEmpty(filterInfo.Name);
                var employees  = await _context.Employee.AsNoTracking()
                                 .Include(employee => employee.Department)
                                 .Include(employee => employee.Section)
                                 .Where(employee => (nameIsNull || employee.EmployeeName.Contains(filterInfo.Name)) &&
                                        (!filterInfo.DepartmentId.HasValue || employee.DepartmentId == filterInfo.DepartmentId) &&
                                        (!filterInfo.SectionId.HasValue || employee.SectionId == filterInfo.SectionId))
                                 .ToListAsync();

                response.Value = employees.Select(employee => employee.EntityToDto()).ToList();

                foreach (var dto in response.Value)
                {
                    dto.HasAccess = await _context.Account.AsNoTracking().AnyAsync(acc => acc.EmployeeId == dto.Id);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #25
0
        /// <summary>
        /// gets all the items an employee has
        /// </summary>
        /// <param name="employeeId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <ItemDto> > > GetItemsByEmployeeId(int employeeId)
        {
            var response = new AlpApiResponse <List <ItemDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetItemsByEmployeeId),
                    employeeId
                }.ToString());

                var items = await _context.Item.AsNoTracking()
                            .Include(item => item.Department)
                            .Include(item => item.Employee)
                            .Include(item => item.Building)
                            .Include(item => item.Section)
                            .Include(item => item.Floor)
                            .Include(item => item.ItemNature)
                            .Include(item => item.ItemState)
                            .Include(item => item.ItemType)
                            .Where(item => item.EmployeeId == employeeId).ToListAsync();

                var dtoList = items.Select(item => item.EntityToDto()).ToList();

                response.Value = dtoList;
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #26
0
        /// <summary>
        /// set items dateofscrap to now
        /// </summary>
        /// <param name="itemId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> Scrap(int itemId)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(ChangeOwnerToDepartmentChief),
                    itemId
                }.ToString());

                var item = await _context.Item.Include(it => it.Department).FirstOrDefaultAsync(it => it.ItemId == itemId);

                if (item == null)
                {
                    response.Success = false;
                    response.Message = "A tárgy nem található az adatbázisban!";
                    return(response);
                }

                item.DateOfScrap = DateTime.Now;
                item.ItemStateId = 2;

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #27
0
        /// <summary>
        /// updates itemstate by dto
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> UpdateItemState(ItemStateDto dto)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(UpdateItemState),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                if (dto.Id == 1 || dto.Id == 2 || dto.Id == 3)
                {
                    response.Success = false;
                    response.Message = "Ennek a státusznak az adatai nem változtathatóak!";
                    return(response);
                }

                var updatedEntity = await _context.ItemState.FirstOrDefaultAsync(itemState => itemState.ItemStateId == dto.Id);

                updatedEntity.UpdateEntityByDto(dto);
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #28
0
        /// <summary>
        /// gets an item by id
        /// </summary>
        /// <param name="itemId"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <ItemDto> > GetItemById(int itemId)
        {
            var response = new AlpApiResponse <ItemDto>();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetItemById),
                    itemId
                }.ToString());

                var entity = await _context.Item.FirstAsync(item => item.ItemId == itemId);

                if (entity == null)
                {
                    response.Success = false;
                    response.Message = "Ez a leltárelem nincs benne az adatbázisban!";
                    return(response);
                }

                response.Value = entity.EntityToDto();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #29
0
ファイル: SectionService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// adds a new section to the database
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <SectionDto> > InsertNewSection(SectionDto dto)
        {
            var response = new AlpApiResponse <SectionDto>();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(InsertNewSection),
                    dto    = dto?.ToString()
                }.ToString());

                dto.Validate();

                var entity = dto.DtoToEntity();
                entity.Floor      = null;
                entity.Department = null;
                await _context.Section.AddAsync(entity);

                await _context.SaveChangesAsync();

                response.Value = entity.EntityToDto();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }
コード例 #30
0
ファイル: EmployeeService.cs プロジェクト: amocsari/ALP
        /// <summary>
        /// gets an employee by name
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse <List <EmployeeDto> > > GetByName(string name)
        {
            var response = new AlpApiResponse <List <EmployeeDto> >();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(GetByName),
                    name
                }.ToString());

                if (string.IsNullOrEmpty(name))
                {
                    return(null);
                }

                name = name.ToLower();
                var entities = await _context.Employee.Where(employee => employee.EmployeeName.ToLower().Equals(name)).ToListAsync();

                response.Value = entities.Select(entity => entity.EntityToDto()).ToList();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }