コード例 #1
0
        /// <summary>
        /// Checks Name
        /// </summary>
        /// <param name="viewModel">Injected <see cref="UpdateArenal"/></param>
        /// <returns>Instance of <see cref="Task{Arenal}"/></returns>
        public async Task <Arenal> CheckName(UpdateArenal @viewModel)
        {
            Arenal @arenal = await Context.Arenal
                             .AsNoTracking()
                             .TagWith("CheckName")
                             .FirstOrDefaultAsync(x => x.Name == @viewModel.Name && x.Id != @viewModel.Id);

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

                Logger.WriteGetItemFoundLog(@logData);

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

            return(@arenal);
        }
コード例 #2
0
        /// <summary>
        /// Finds Arenal By Id
        /// </summary>
        /// <param name="id">Injected <see cref="int"/></param>
        /// <returns>Instance of <see cref="Task{Arenal}"/></returns>
        public async Task <Arenal> FindArenalById(int @id)
        {
            Arenal @arenal = await Context.Arenal
                             .TagWith("FindArenalById")
                             .AsQueryable()
                             .AsSplitQuery()
                             .Include(x => x.ArenalPoblaciones)
                             .ThenInclude(x => x.Poblacion)
                             .FirstOrDefaultAsync(x => x.Id == @id);

            if (@arenal == null)
            {
                // Log
                string @logData = @arenal.GetType().Name
                                  + " with Id "
                                  + @id
                                  + " was not found at "
                                  + DateTime.Now.ToShortTimeString();

                Logger.WriteGetItemNotFoundLog(@logData);

                throw new Exception(@arenal.GetType().Name
                                    + " with Id "
                                    + @id
                                    + " does not exist");
            }

            return(@arenal);
        }
コード例 #3
0
        /// <summary>
        /// Updates Historico
        /// </summary>
        /// <param name="entity">Injected <see cref="Arenal"/></param>
        /// <returns>Instance of <see cref="Task"/></returns>
        public async Task UpdateHistorico(Arenal @entity)
        {
            Historico @historico = new()
            {
                Arenal       = @entity,
                Bandera      = await FindBanderaById((int)FlagIdentifiers.Amarilla),
                BajaMarAlba  = DateTime.Now,
                BajaMarOcaso = DateTime.Now,
                AltaMarAlba  = DateTime.Now,
                AltaMarOcaso = DateTime.Now,
                Temperatura  = 20,
            };

            @entity.Historicos.Add(@historico);
        }
コード例 #4
0
        /// <summary>
        /// Updates Arenal Poblacion
        /// </summary>
        /// <param name="viewModel">Injected <see cref="UpdateArenal"/></param>
        /// <param name="entity">Injected <see cref="Arenal"/></param>
        public void UpdateArenalPoblacion(UpdateArenal @viewModel, Arenal @entity)
        {
            @viewModel.PoblacionesId.AsQueryable().ToList().ForEach(async x =>
            {
                Poblacion @poblacion = await FindPoblacionById(x);

                ArenalPoblacion @arenalPoblacion = new()
                {
                    Arenal    = @entity,
                    Poblacion = @poblacion,
                };

                @entity.ArenalPoblaciones.Add(@arenalPoblacion);
            });
        }
コード例 #5
0
        /// <summary>
        /// Updates Arenal
        /// </summary>
        /// <param name="viewModel">Injected <see cref="UpdateArenal"/></param>
        /// <returns>Instance of <see cref="Task{ViewArenal}"/></returns>
        public async Task <ViewArenal> UpdateArenal(UpdateArenal @viewModel)
        {
            await CheckName(@viewModel);

            Arenal @arenal = await FindArenalById(@viewModel.Id);

            @arenal.Name = @viewModel.Name;
            @arenal.ArenalPoblaciones = new List <ArenalPoblacion>();
            @arenal.Historicos        = new List <Historico>();

            try
            {
                Context.Arenal.Update(@arenal);

                UpdateArenalPoblacion(@viewModel, @arenal);

                await UpdateHistorico(@arenal);

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

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

            Logger.WriteUpdateItemLog(@logData);

            return(Mapper.Map <ViewArenal>(@arenal));;
        }
コード例 #6
0
        /// <summary>
        /// Removes Arenal By Id
        /// </summary>
        /// <param name="id">Injected <see cref="int"/></param>
        /// <returns>Instance of <see cref="Task"/></returns>
        public async Task RemoveArenalById(int @id)
        {
            try
            {
                Arenal @arenal = await FindArenalById(@id);

                Context.Arenal.Remove(@arenal);

                await Context.SaveChangesAsync();

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

                Logger.WriteDeleteItemLog(@logData);
            }
            catch (DbUpdateConcurrencyException)
            {
                await FindArenalById(@id);
            }
        }