public async Task <IActionResult> ApprovalKeyOutCome(int empId, StatusForUpdateDto entity)
        {
            if (entity == null)
            {
                return(BadRequest());
            }

            var result = await resultArea.EmployeeApproval(empId, entity);

            if (result > 0)
            {
                return(Ok());
            }
            return(NoContent());
        }
        public async Task <long> EmployeeApproval(int empId, StatusForUpdateDto entity)
        {
            try
            {
                var filter = Builders <KeyResultArea> .Filter.Where(r => r.EmployeeId == empId && r.Year == DateTime.Now.Year);

                var oldKeyResultArea = Collection.Find(filter).ToList();
                oldKeyResultArea.ForEach(x => x.Status.Employee = entity.Approve);

                var update = Builders <KeyResultArea> .Update.Set("Status.Employee", entity.Approve);

                var result = await Collection.UpdateManyAsync(filter, update);

                return(result.ModifiedCount);
            }
            catch (Exception ex)
            {
                logger.LogError("update of appraisal configuration failed", ex);
                return(0);
            }
        }
        public async Task <KeyResultArea> HodApproval(int empId, int memberId, ObjectId keyResultAreaId, string whoami, StatusForUpdateDto entity)
        {
            try
            {
                var filter = Builders <KeyResultArea> .Filter.Where(r => r.EmployeeId == memberId && r.Id == keyResultAreaId && (r.HodDetails.EmployeeId == empId || r.AppraiserDetails.EmployeeId == empId));

                var oldKeyResultArea = Collection.Find(filter).FirstOrDefault();
                if (oldKeyResultArea != null)
                {
                    if (oldKeyResultArea.HodDetails.EmployeeId == empId && oldKeyResultArea.AppraiserDetails.EmployeeId == empId)
                    {
                        oldKeyResultArea.Status.Hod = entity.Approve;
                        oldKeyResultArea.Approved   = entity.Approve;
                    }
                    else if (whoami == "HOD")
                    {
                        oldKeyResultArea.Status.Hod = entity.Approve;
                        oldKeyResultArea.Approved   = entity.Approve;
                    }
                    else
                    {
                        oldKeyResultArea.Status.IsAccepted = entity.Approve;
                        oldKeyResultArea.SetActive();
                    }
                    var newKeyResultArea = oldKeyResultArea.ToBsonDocument();

                    var update = new BsonDocument("$set", newKeyResultArea);
                    var result = await Collection.FindOneAndUpdateAsync(filter, update, options : new FindOneAndUpdateOptions <KeyResultArea> {
                        ReturnDocument = ReturnDocument.After
                    });

                    return(result);
                }
                return(null);
            }
            catch (Exception ex)
            {
                //throw ex.InnerException;
                logger.LogError("update of appraisal configuration failed", ex);
                return(null);
            }
        }
        public async Task <IActionResult> ApprovalKeyOutCome(int empId, int memberId, string KeyResultAreaId, string whoami, StatusForUpdateDto entity)
        {
            var keyResultAreaId = new ObjectId(KeyResultAreaId);

            if (entity == null)
            {
                return(BadRequest());
            }

            var result = await resultArea.HodApproval(empId, memberId, keyResultAreaId, whoami, entity);

            if (result != null)
            {
                return(Ok(result));
            }

            return(NotFound());
        }