示例#1
0
        public async Task <JsonResult> TurnoverWithDays([FromBody] TurnoverWithDays input)
        {
            await CheckPermission();

            if (input.Days == null || input.Days.Count == 0)
            {
                throw new ValidationException("Не заполнены дни циклового графика");
            }
            var service = new ScheduleCycleService(_logger, _mapper);

            if (input.Id != 0)
            {
                return(Json(await service.UpdateTurnoverWithDays(input)));
            }
            return(Json(await service.AddTurnoverWithDays(input)));
        }
        /// <summary>
        /// Добавить тарновера с днями в цикловой график
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <TurnoverWithDays> AddTurnoverWithDays(TurnoverWithDays input)
        {
            //Начинаем блядь КВН
            using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled))
            {
                var sqlRTurnovers = new TurnoversRepoisitory(_logger);
                var sqlRDays      = new DayOfRoutesRepoisitory(_logger);

                var turnover = await sqlRTurnovers.Add(_mapper.Map <TurnoverWithDays, Turnover>(input));

                var result = _mapper.Map <Turnover, TurnoverWithDays>(turnover);
                result.Days = new List <DayOfWeek>();
                foreach (var inputDay in input.Days)
                {
                    var day = await sqlRDays.Add(new DayOfRoute { TurnoverId = result.Id, Day = inputDay });

                    result.Days.Add(day.Day);
                }
                transaction.Complete();
                return(result);
            }
        }
        public async Task <TurnoverWithDays> UpdateTurnoverWithDays(TurnoverWithDays input)
        {
            //Начинаем блядь КВН
            using (var transaction = new TransactionScope(asyncFlowOption: TransactionScopeAsyncFlowOption.Enabled))
            {
                var sqlRTurnovers = new TurnoversRepoisitory(_logger);
                var sqlRDays      = new DayOfRoutesRepoisitory(_logger);

                var turnover = await sqlRTurnovers.Update(_mapper.Map <TurnoverWithDays, Turnover>(input));

                var result      = _mapper.Map <Turnover, TurnoverWithDays>(turnover);
                var currentDays = await sqlRDays.DaysByTurnoverId(input.Id);

                result.Days = new List <DayOfWeek>();
                foreach (var inputDay in input.Days)
                {
                    if (currentDays.Any(x => x.Day.Equals(inputDay)))
                    {
                        result.Days.Add(inputDay);
                        continue;
                    }
                    var day = await sqlRDays.Add(new DayOfRoute { TurnoverId = input.Id, Day = inputDay });

                    result.Days.Add(day.Day);
                }

                foreach (var currentDay in currentDays)
                {
                    if (!input.Days.Any(x => x.Equals(currentDay.Day)))
                    {
                        await sqlRDays.Delete(currentDay.Id);
                    }
                }

                transaction.Complete();
                return(result);
            }
        }