Beispiel #1
0
        /// <summary>
        /// Checks Name
        /// </summary>
        /// <param name="viewModel">Injected <see cref="UpdateBandera"/></param>
        /// <returns>Instance of <see cref="Task{Bandera}"/></returns>
        public async Task <Bandera> CheckName(UpdateBandera @viewModel)
        {
            Bandera @bandera = await Context.Bandera
                               .TagWith("CheckName")
                               .AsNoTracking()
                               .FirstOrDefaultAsync(x => x.Name == @viewModel.Name && x.Id != viewModel.Id);

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

                Logger.WriteGetItemFoundLog(@logData);

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

            return(bandera);
        }
Beispiel #2
0
        /// <summary>
        /// Updates Bandera
        /// </summary>
        /// <param name="viewModel">Injected <see cref="UpdateBandera"/></param>
        /// <returns>Instance of <see cref="Task{ViewBandera}"/></returns>
        public async Task <ViewBandera> UpdateBandera(UpdateBandera @viewModel)
        {
            await CheckName(@viewModel);

            Bandera @bandera = await FindBanderaById(@viewModel.Id);

            @bandera.Name     = @viewModel.Name;
            @bandera.ImageUri = @viewModel.ImageUri;

            try
            {
                Context.Bandera.Update(@bandera);

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

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

            Logger.WriteUpdateItemLog(@logData);

            return(Mapper.Map <ViewBandera>(@bandera));
        }