public IActionResult Edit(ResistanceEditForm viewModel)
        {
            if (ModelState.IsValid)
            {
                viewModel.Resistance.UserName = UserName;
                _rsApplication.UpdateResistance(viewModel);
                return(Ok());
            }
            var values = ModelState.Values.Where(m => m.Errors.Count > 0).Select(s => s.Errors).ToList();

            return(StatusCode(StatusCodes.Status500InternalServerError, values));
        }
        public void UpdateResistance(ResistanceEditForm form)
        {
            var viewModel  = form.Resistance;
            var resistance = _db.Resistance.SingleOrDefault(r => r.Id == viewModel.Id);

            if (viewModel.CompanyId == -1)
            {
                var newCompany = _db.Company.Add(new Company {
                    Name = form.Company.Name, CompanyScaleId = form.Company.ScaleId, CompanyTypeId = form.Company.TypeId, CompanyWorkLineId = form.Company.WorklineId
                });
                viewModel.CompanyId = newCompany.Entity.Id;
            }
            if (viewModel.MainCompanyId == -1)
            {
                var newCompany = _db.Company.Add(new Company {
                    Name = form.MainCompany.Name, CompanyScaleId = form.MainCompany.ScaleId, CompanyTypeId = form.MainCompany.TypeId, CompanyWorkLineId = form.MainCompany.WorklineId
                });
                viewModel.MainCompanyId = newCompany.Entity.Id;
                _db.CompanyOutsourceCompany.Add(new CompanyOutsourceCompany {
                    CompanyId = viewModel.MainCompanyId.Value, OutsourceCompanyId = viewModel.CompanyId
                });
            }
            if (viewModel.MainCompanyId != null && viewModel.MainCompanyId != 0)
            {
                var exist = _db.CompanyOutsourceCompany.Any(s => s.CompanyId == viewModel.MainCompanyId && s.OutsourceCompanyId == viewModel.CompanyId);
                if (!exist)
                {
                    _db.CompanyOutsourceCompany.Add(new CompanyOutsourceCompany {
                        CompanyId = viewModel.MainCompanyId.Value, OutsourceCompanyId = viewModel.CompanyId
                    });
                }
            }
            resistance.Id                           = viewModel.Id;
            resistance.CategoryId                   = viewModel.CategoryId;
            resistance.CompanyId                    = viewModel.CompanyId;
            resistance.MainCompanyId                = viewModel.MainCompanyId;
            resistance.Code                         = viewModel.Code;
            resistance.EmployeeCountId              = viewModel.EmployeeCountId;
            resistance.EmployeeCountNumber          = viewModel.EmployeeCount;
            resistance.HasTradeUnion                = viewModel.HasTradeUnion;
            resistance.TradeUnionAuthorityId        = viewModel.TradeUnionAuthorityId;
            resistance.TradeUnionId                 = viewModel.TradeUnionId;
            resistance.Description                  = viewModel.ResistanceDescription;
            resistance.Note                         = viewModel.ResistanceNote;
            resistance.LegalInterventionDesc        = viewModel.LegalInterventionDesc;
            resistance.FiredEmployeeCountByProtesto = viewModel.FiredEmployeeCountByProtesto;
            resistance.DevelopRight                 = viewModel.DevelopRight;
            resistance.ResistanceResult             = viewModel.ResistanceResult;
            resistance.Updater                      = viewModel.UserName;
            resistance.UpdateDate                   = DateTime.Now;
            resistance.ResistanceCorporations       = new List <ResistanceCorporation>();
            resistance.ResistanceEmploymentTypes    = new List <ResistanceEmploymentType>();
            resistance.ResistanceResistanceReasons  = new List <ResistanceResistanceReason>();
            resistance.ResistanceNews               = new List <ResistanceNews>();
            if (viewModel.AnyLegalIntervention == 1)
            {
                resistance.AnyLegalIntervention = true;
            }
            if (viewModel.AnyLegalIntervention == 2)
            {
                resistance.AnyLegalIntervention = false;
            }
            var rCorporations = _db.ResistanceCorporation.Where(r => r.ResistanceId == resistance.Id).ToList();

            _db.ResistanceCorporation.RemoveRange(rCorporations);
            if (viewModel.EmploymentTypeIds != null)
            {
                viewModel.EmploymentTypeIds.ForEach(emp => resistance.ResistanceEmploymentTypes.Add(new ResistanceEmploymentType
                {
                    EmploymentTypeId = emp
                }));
            }
            var rEmpl = _db.ResistanceEmploymentType.Where(r => r.ResistanceId == resistance.Id).ToList();

            _db.ResistanceEmploymentType.RemoveRange(rEmpl);

            var rReason = _db.ResistanceResistanceReason.Where(r => r.ResistanceId == resistance.Id).ToList();

            _db.ResistanceResistanceReason.RemoveRange(rReason);
            if (viewModel.ResistanceNewsIds != null)
            {
                viewModel.ResistanceNewsIds.Where(n => !n.IsDeleted).ToList().ForEach(news => resistance.ResistanceNews.Add(new ResistanceNews
                {
                    NewsId = news.Id
                }));
            }
            var rNews = _db.ResistanceNews.Where(r => r.ResistanceId == resistance.Id).ToList();

            _db.ResistanceNews.RemoveRange(rNews);
            //BindTradeUnionId(resistance, viewModel.TradeUnionId);
            BindCorporation(resistance, viewModel.CorporationIds);
            BindResistanceReason(resistance, viewModel.ResistanceReasonIds);
            _db.Resistance.Update(resistance);
            _db.SaveChanges();
        }