예제 #1
0
        public async Task <T> AddAsync(T entity)
        {
            _dbContext.Set <T>().Add(entity);
            await _dbContext.SaveChangesAsync();

            return(entity);
        }
        public async Task CreateAsync(Vehicle vehicleToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            SiccoAppConfiguration.SuspendExecutionStrategy = true;

            DbContextTransaction tran = db.Database.BeginTransaction();

            try
            {
                db.Vehicles.Add(vehicleToAdd);
                //await db.SaveChangesAsync();
                //Asignacion automatica del vehiculo al primer contrato que encuentre del Contratista (MAL, solo para pruebas)
                //db.VehiclesContracts.Add(CreateVehicleContract(vehicleToAdd));

                await db.SaveChangesAsync();

                tran.Commit();

                timespan.Stop();
                log.TraceApi("SQL Database", "VehicleRepository.CreateAsync", timespan.Elapsed, "vehicleToAdd={0}", vehicleToAdd);
            }
            catch (Exception e)
            {
                tran.Rollback();
                log.Error(e, "Error in VehicleRepository.CreateAsync(employeeToAdd={0})", vehicleToAdd);
                throw;
            }

            SiccoAppConfiguration.SuspendExecutionStrategy = false;
        }
예제 #3
0
        /// <summary>
        /// Cuando una Presetacion la toma un Auditor para su revision
        /// </summary>
        /// <param name="presentation"></param>
        /// <returns></returns>
#warning "Falta tomar el Id del Usuario logueado"
        public async Task TakeToAudit(Presentation presentation)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            SiccoAppConfiguration.SuspendExecutionStrategy = true;

            DbContextTransaction tran = db.Database.BeginTransaction();

            try
            {
                if (presentation.PresentationStatus != PresentationStatus.Pending)
                {
                    throw new Exception("No se puede tomar Presentaciones que no estan PENDIENTES");
                }

                //actualizacion de Presentation
                presentation.TakenDate = DateTime.UtcNow;
                //presentation.TakenFor = 999;
                presentation.PresentationStatus = PresentationStatus.Processing;

                //actualizacion de Requerimientos
                var requirement = await db.Requirements.FindAsync(presentation.RequirementID);

                requirement.RequirementStatus = RequirementStatus.Processing;

                //creacion de el historico de accionesde Presentation
                PresentationAction presentationAction = new PresentationAction
                {
                    PresentationID         = presentation.PresentationID,
                    PresentationDate       = DateTime.UtcNow,
                    ActionForID            = presentation.TakenForID,
                    PresentationActionType = PresentationActionType.Taken
                };
                db.PresentationActions.Add(presentationAction);

                db.Entry(presentation).State = EntityState.Modified;

                await db.SaveChangesAsync();

                tran.Commit();

                timespan.Stop();
                log.TraceApi("SQL Database", "PresentationRepository.TakeToAudit", timespan.Elapsed, "presentation={0}", presentation);
            }
            catch (Exception e)
            {
                tran.Rollback();
                log.Error(e, "Error in PresentationRepository.TakeToAudit(presentation={0})", presentation);
                throw;
            }

            SiccoAppConfiguration.SuspendExecutionStrategy = false;
        }
        public async Task CreateAsync(CustomerAuditor customerAuditorToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.CustomerAuditors.Add(customerAuditorToAdd);
                await db.SaveChangesAsync();

                //Seteamos el Rol
                SetRole(customerAuditorToAdd.UserId);

                timespan.Stop();
                log.TraceApi("SQL Database", "CustomerAuditorRespository.CreateAsync", timespan.Elapsed, "customerAuditorToAdd={0}", customerAuditorToAdd);
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    //Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    log.Error(e, "Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        //Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                        log.Error(e, "- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }
            catch (Exception e)
            {
                log.Error(e, "Error in CustomerAuditorRespository.CreateAsync(customerAuditorToAdd={0})", customerAuditorToAdd);
                throw;
            }
        }
        public async Task CreateAsync(DocumentationBusinessType documentToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.DocumentationBusinessTypes.Add(documentToAdd);
                await db.SaveChangesAsync();

                timespan.Stop();
                log.TraceApi("SQL Database", "DocumentationBusinessTypeRepository.CreateAsync", timespan.Elapsed, "documentToAdd={0}", documentToAdd);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in DocumentationBusinessTypeRepository.CreateAsync(documentToAdd={0})", documentToAdd);
                throw;
            }
        }
예제 #6
0
        public async Task CreateAsync(BusinessTypeTemplate businessTypeTemplateToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.BusinessTypeTemplates.Add(businessTypeTemplateToAdd);
                await db.SaveChangesAsync();

                timespan.Stop();
                log.TraceApi("SQL Database", "BusinessTypeTemplateRepository.CreateAsync", timespan.Elapsed, "businessTypeTemplateToAdd={0}", businessTypeTemplateToAdd);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in BusinessTypeTemplateRepository.CreateAsync(businessTypeTemplateToAdd={0})", businessTypeTemplateToAdd);
                throw;
            }
        }
예제 #7
0
        public async Task CreateAsync(EmailAccount emailAccountToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.EmailAccounts.Add(emailAccountToAdd);
                await db.SaveChangesAsync();

                timespan.Stop();
                log.TraceApi("SQL Database", "EmailAccountRepository.CreateAsync", timespan.Elapsed, "emailAccountToAdd={0}", emailAccountToAdd);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in EmailAccountRepository.CreateAsync(emailAccountToAdd={0})", emailAccountToAdd);
                throw;
            }
        }
        public async Task UpdateAsync(Contract contractToSave)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.Entry(contractToSave).State = EntityState.Modified;
                await db.SaveChangesAsync();

                timespan.Stop();
                log.TraceApi("SQL Database", "ContractRepository.UpdateAsync", timespan.Elapsed, "contractToSave={0}", contractToSave);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in ContractRepository.UpdateAsync(vehicleToSave={0})", contractToSave);
                throw;
            }
        }
        public async Task CreateAsync(Customer customerToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.Customers.Add(customerToAdd);
                await db.SaveChangesAsync();

                await GenerateDocumentationMatrix(customerToAdd.CustomerID, true);

                timespan.Stop();
                log.TraceApi("SQL Database", "CustomerRepository.CreateAsync", timespan.Elapsed, "customerToAdd={0}", customerToAdd);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in CustomerRepository.CreateAsync(customerToAdd={0})", customerToAdd);
                throw;
            }
        }
        public async Task CreateAsync(Requirement requirementToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            try
            {
                db.Requirements.Add(requirementToAdd);
                await db.SaveChangesAsync();

                timespan.Stop();
                log.TraceApi("SQL Database", "RequirementRepository.CreateAsync", timespan.Elapsed, "requirementToAdd={0}", requirementToAdd);
            }
            catch (Exception e)
            {
                log.Error(e, "Error in RequirementRepository.CreateAsync(requirementToAdd={0})", requirementToAdd);
                throw;
            }

            SiccoAppConfiguration.SuspendExecutionStrategy = false;
        }
        //https://msdn.microsoft.com/en-us/data/dn307226
        public async Task CreateAsync(Contractor contractorToAdd)
        {
            Stopwatch timespan = Stopwatch.StartNew();

            //Se suspende momentaneamente la estrategia de Azure (reintentos), porque la misma no
            //soporta manejo de transacciones por parte del usuario
            SiccoAppConfiguration.SuspendExecutionStrategy = true;

            DbContextTransaction tran = db.Database.BeginTransaction();

            try
            {
                db.Contractors.Add(contractorToAdd);
                //await db.SaveChangesAsync();

                var contract = CreateContract(contractorToAdd);
                db.Contracts.Add(contract);

                await db.SaveChangesAsync();

                tran.Commit();

                await GenerateContractorRequirements(contractorToAdd.ContractorID, contract.ContractID);

                timespan.Stop();
                log.TraceApi("SQL Database", "ContractorRepository.CreateAsync", timespan.Elapsed, "customerToAdd={0}", contractorToAdd);
            }
            catch (Exception e)
            {
                tran.Rollback();
                log.Error(e, "Error in ContractorRepository.CreateAsync(contractorToAdd={0})", contractorToAdd);
                throw;
            }

            SiccoAppConfiguration.SuspendExecutionStrategy = false;
        }