Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        /// <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);
        });