public async Task <Evaluation> updateEvaluation(EvaluationViewModel evaluationVM, int UserID)
        {
            checkBissines(evaluationVM, UserID, "Update");

            evaluationVM.evaluationCharterItems = new List <EvaluationCharterItem>();
            foreach (EvalCharterCommunityViewModel obj in evaluationVM.evalCharterCommunityItemsVM)
            {
                EvaluationCharterItem item = new EvaluationCharterItem
                {
                    EvaluationCharterItemsID  = Convert.ToInt16(obj.EvaluationCharterItemsID),
                    EvaluationID              = Convert.ToInt16(evaluationVM.evaluationVM.EvaluationID),
                    EvalCharterDetailsItemsID = obj.EvalCharterDetailsItemsID,
                    DegreeEmployee            = Convert.ToInt16(obj.DegreeEmployee)
                };
                evaluationVM.evaluationCharterItems.Add(item);
            }

            _context.UpdateRange(evaluationVM.evaluationCharterItems);
            await _context.SaveChangesAsync();

            //AttachmentConcrete attachmentConcrete = new AttachmentConcrete(_context, _configuration);
            //if (evaluationVM.attachments != null)
            //{
            //    foreach (Attachment dtl in evaluationVM.attachments)
            //    {
            //        Attachment obj = _context.Attachments.FirstOrDefault(p => p.AttachmentID == dtl.AttachmentID);
            //        obj.ReferenceID = evaluation.EvaluationID;
            //        await attachmentConcrete.UpdateAttachment(obj);
            //    }
            //}
            Evaluation evaluation = _context.Evaluations.Where(p => p.EvaluationID == evaluationVM.evaluationVM.EvaluationID).FirstOrDefault();

            return(evaluation);
        }
        public async Task <Evaluation> saveEvaluation(EvaluationViewModel evaluationVM, int UserID)
        {
            checkBissines(evaluationVM, UserID, "Insert");

            Evaluation evaluation = new Evaluation()
            {
                EvaluationID  = 0,
                EvalCharterID = evaluationVM.evaluationVM.EvalCharterID,
                EmployeeID    = evaluationVM.evaluationVM.EmployeeID,
                UserID        = evaluationVM.evaluationVM.UserID,
                Notes         = evaluationVM.evaluationVM.Notes
            };
            await _context.Evaluations.AddAsync(evaluation);

            evaluationVM.evaluationCharterItems = new List <EvaluationCharterItem>();
            foreach (EvalCharterCommunityViewModel obj in evaluationVM.evalCharterCommunityItemsVM)
            {
                EvaluationCharterItem item = new EvaluationCharterItem
                {
                    EvaluationCharterItemsID  = 0,
                    EvaluationID              = evaluation.EvaluationID,
                    EvalCharterDetailsItemsID = obj.EvalCharterDetailsItemsID,
                    DegreeEmployee            = Convert.ToInt16(obj.DegreeEmployee)
                };
                evaluationVM.evaluationCharterItems.Add(item);
            }

            await _context.AddRangeAsync(evaluationVM.evaluationCharterItems);

            await _context.SaveChangesAsync();

            AttachmentConcrete attachmentConcrete = new AttachmentConcrete(_context, _configuration);

            if (evaluationVM.attachments != null)
            {
                foreach (Attachment dtl in evaluationVM.attachments)
                {
                    Attachment obj = _context.Attachments.FirstOrDefault(p => p.AttachmentID == dtl.AttachmentID);
                    obj.ReferenceID = evaluation.EvaluationID;
                    await attachmentConcrete.UpdateAttachment(obj);
                }
            }

            Employee employeeManager = _context.EmployeeInfoView.Where(p => p.ManagerID == evaluationVM.evaluationVM.EmployeeID).FirstOrDefault();
            Users    usersManager    = _context.Users.Where(p => p.EmployeeId == employeeManager.EmployeeID).FirstOrDefault();

            if (usersManager != null)
            {
                await notificationConcrete.SaveNotification(evaluation.EvaluationID, false, "NOT02", usersManager.UserId, 0, UserID);
            }

            return(evaluation);
        }