コード例 #1
0
        /// <summary>
        /// Adds Month
        /// </summary>
        /// <param name="viewModel">Injected <see cref="AddMonth"/></param>
        /// <returns>Instance of <see cref="Task{ViewMonth}"/></returns>
        public async Task <ViewMonth> AddMonth(AddMonth @viewModel)
        {
            await CheckName(@viewModel);

            Month @Month = new()
            {
                Name   = @viewModel.Name,
                Number = @viewModel.Number
            };

            try
            {
                await Context.Month.AddAsync(@Month);

                await Context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                await CheckName(@viewModel);
            }

            // Log
            string @logData = @Month.GetType().Name
                              + " with Id "
                              + @Month.Id
                              + " was added at "
                              + DateTime.Now.ToShortTimeString();

            Logger.WriteInsertItemLog(@logData);

            return(Mapper.Map <ViewMonth>(@Month));
        }
コード例 #2
0
        /// <summary>
        /// Checks Name
        /// </summary>
        /// <param name="viewModel">Injected <see cref="AddMonth"/></param>
        /// <returns>Instance of <see cref="Task{Month}"/></returns>
        public async Task <Month> CheckName(AddMonth @viewModel)
        {
            Month @Month = await Context.Month
                           .TagWith("CheckName")
                           .AsNoTracking()
                           .FirstOrDefaultAsync(x => x.Name == @viewModel.Name);

            if (@Month != null)
            {
                // Log
                string @logData = @Month.GetType().Name
                                  + " with Name "
                                  + @Month.Name
                                  + " was already found at "
                                  + DateTime.Now.ToShortTimeString();

                Logger.WriteGetItemFoundLog(@logData);

                throw new Exception(@Month.GetType().Name
                                    + " with Name "
                                    + @viewModel.Name
                                    + " already exists");
            }

            return(@Month);
        }