public async Task <IActionResult> EditLegalUnit([FromBody] LegalUnitEditM data) { var result = await _editService.EditLegalUnit(data, User.GetUserId()); if (result != null && result.ContainsKey(nameof(UserAccess.UnauthorizedAccess))) { return(Forbid()); } return(result == null ? (IActionResult)NoContent() : BadRequest(result)); }
/// <summary> /// Method of editing a legal unit /// </summary> /// <param name = "data"> Data </param> /// <param name = "userId"> User Id </param> /// <returns> </returns> public async Task <Dictionary <string, string[]> > EditLegalUnit(LegalUnitEditM data, string userId) => await EditUnitContext <LegalUnit, LegalUnitEditM>( data, m => m.RegId ?? 0, userId, unit => { if (_deletedStatusId != null && unit.UnitStatusId == _deletedStatusId) { _deleteService.CheckBeforeDelete(unit, true); } if (Common.HasAccess <LegalUnit>(data.DataAccess, v => v.LocalUnits)) { var localUnits = _dbContext.LocalUnits.Where(x => data.LocalUnits.Contains(x.RegId) && x.UnitStatusId != _liquidateStatusId); unit.LocalUnits.Clear(); unit.HistoryLocalUnitIds = null; if (_liquidateStatusId != null && unit.UnitStatusId == _liquidateStatusId) { var enterpriseUnit = _dbContext.EnterpriseUnits.Include(x => x.LegalUnits).FirstOrDefault(x => unit.EnterpriseUnitRegId == x.RegId); var legalUnits = enterpriseUnit.LegalUnits.Where(x => !x.IsDeleted && x.UnitStatusId != _liquidateStatusId).ToList(); if (enterpriseUnit != null && legalUnits.Count == 0) { enterpriseUnit.UnitStatusId = unit.UnitStatusId; enterpriseUnit.LiqReason = unit.LiqReason; enterpriseUnit.LiqDate = unit.LiqDate; _editArrayStatisticalUnits.Add(Mapper.Map <IStatisticalUnit, ElasticStatUnit>(enterpriseUnit)); } } if (data.LocalUnits == null) { return(Task.CompletedTask); } foreach (var localUnit in localUnits) { if (_liquidateStatusId != null && unit.UnitStatusId == _liquidateStatusId) { localUnit.UnitStatusId = unit.UnitStatusId; localUnit.LiqReason = unit.LiqReason; localUnit.LiqDate = unit.LiqDate; } unit.LocalUnits.Add(localUnit); _addArrayStatisticalUnits.Add(Mapper.Map <IStatisticalUnit, ElasticStatUnit>(localUnit)); } if (data.LocalUnits != null) { unit.HistoryLocalUnitIds = string.Join(",", data.LocalUnits); } } return(Task.CompletedTask); });