Ejemplo n.º 1
0
        public async Task <IActionResult> TakeEsm(long id, Esm esm)
        {
            /*status:{
             * '1': 'home',
             * '2': 'on way',
             * '3': 'in depot, but not home
             * }
             * esm_format:{
             * esmId:'',
             * LastDepot:''//депо,которое принимает esm.
             * }
             */

            if (id != esm.EsmId || esm.LastDepot == null)
            {
                return(BadRequest());
            }

            var esmCurrent = await _context.Esm.FindAsync(esm.EsmId);

            if (esmCurrent == null || !(esmCurrent.LastDriver != null && esmCurrent.LastDriver == esm.LastDriver))
            {
                return(BadRequest());
            }

            if (esm.LastDepot != esmCurrent.HomeDepot)
            {
                esmCurrent.Status = 3;
            }
            else
            {
                esmCurrent.Status = 1;
            }

            esmCurrent.LastDepot             = esm.LastDepot;
            _context.Entry(esmCurrent).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EsmExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    //TODO:что тут?
                    throw;
                }
            }

            return(Ok());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GiveOutEsm(long id, Esm esm)
        {
            /*status:{
             * '1': 'home',
             * '2': 'on way',
             * '3': 'in depot, but not home
             * }
             * esm_format:{
             * esmId:'',
             * LastDriver:''//машинист, которому выдают esm.
             * }*/

            if (id != esm.EsmId || esm.LastDriver == null)
            {
                return(BadRequest());
            }

            var driver = await _context.Driver.FindAsync(esm.LastDriver);

            if (driver == null || driver.Esm.Count != 0)
            {
                return(BadRequest());
            }

            var esmCurrent = await _context.Esm.FindAsync(esm.EsmId);

            if (esmCurrent == null || !(esmCurrent.LastDepot != null && esmCurrent.LastDepot == esm.LastDepot))
            {
                return(BadRequest());
            }

            esmCurrent.LastDriver            = esm.LastDriver;
            esmCurrent.Status                = 2;
            _context.Entry(esmCurrent).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EsmExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    //что тут?
                    throw;
                }
            }

            return(Ok());
        }