public async Task <ISingleViewModelResponse <ServiceEnvironmentStatusLog> > CreateServiceEnvironmentStatusLogAsync(ServiceEnvironmentStatusLog entity, Int32?serviceEnvironmentID)
        {
            Logger?.LogDebug("'{0}' has been invoked", nameof(CreateServiceEnvironmentStatusLogAsync));

            var response = new SingleViewModelResponse <ServiceEnvironmentStatusLog>();

            using (var transaction = await DbContext.Database.BeginTransactionAsync())
            {
                try
                {
                    var serviceEnvStatus = await Repository.GetByServiceEnvironmentAsync(new ServiceEnvironment { ServiceEnvironmentID = serviceEnvironmentID });

                    if (serviceEnvStatus == null)
                    {
                        serviceEnvStatus = new ServiceEnvironmentStatus();

                        serviceEnvStatus.ServiceEnvironmentID = serviceEnvironmentID;
                        serviceEnvStatus.Success    = entity.Success;
                        serviceEnvStatus.WatchCount = 1;
                        serviceEnvStatus.LastWatch  = DateTime.Now;

                        await Repository.CreateServiceEnvironmentStatusAsync(serviceEnvStatus);

                        Logger?.LogInformation("The status for service environment was saved successfully");
                    }
                    else
                    {
                        serviceEnvStatus.Success     = entity.Success;
                        serviceEnvStatus.WatchCount += 1;
                        serviceEnvStatus.LastWatch   = DateTime.Now;

                        Logger?.LogInformation("The status for service environment was updated successfully");
                    }

                    entity.ServiceEnvironmentStatusID = serviceEnvStatus.ServiceEnvironmentStatusID;

                    await Repository.CreateServiceEnvironmentStatusLogAsync(entity);

                    Logger?.LogInformation("The status details for service environment was created successfully");

                    transaction.Commit();

                    response.Model = entity;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    response.SetError(Logger, ex);
                }
            }

            return(response);
        }
        public async Task <ISingleViewModelResponse <ServiceEnvironmentStatus> > GetServiceStatusAsync(ServiceEnvironmentStatus entity)
        {
            var response = new SingleViewModelResponse <ServiceEnvironmentStatus>();

            try
            {
                response.Model = await Repository.GetServiceEnvironmentStatusAsync(entity);
            }
            catch (Exception ex)
            {
                response.DidError     = true;
                response.ErrorMessage = ex.Message;
            }

            return(response);
        }
        public async Task <ISingleViewModelResponse <ServiceEnvironmentStatusLog> > CreateServiceEnvironmentStatusLogAsync(ServiceEnvironmentStatusLog entity, Int32?serviceEnvironmentID)
        {
            var response = new SingleViewModelResponse <ServiceEnvironmentStatusLog>();

            using (var transaction = await DbContext.Database.BeginTransactionAsync())
            {
                try
                {
                    var serviceEnvStatus = await Repository.GetByServiceEnvironmentAsync(new ServiceEnvironment { ServiceEnvironmentID = serviceEnvironmentID });

                    if (serviceEnvStatus == null)
                    {
                        serviceEnvStatus = new ServiceEnvironmentStatus();

                        serviceEnvStatus.ServiceEnvironmentID = serviceEnvironmentID;
                        serviceEnvStatus.Success    = entity.Success;
                        serviceEnvStatus.WatchCount = 1;
                        serviceEnvStatus.LastWatch  = DateTime.Now;

                        await Repository.CreateServiceEnvironmentStatusAsync(serviceEnvStatus);
                    }
                    else
                    {
                        serviceEnvStatus.Success     = entity.Success;
                        serviceEnvStatus.WatchCount += 1;
                        serviceEnvStatus.LastWatch   = DateTime.Now;
                    }

                    entity.ServiceEnvironmentStatusID = serviceEnvStatus.ServiceEnvironmentStatusID;

                    await Repository.CreateServiceEnvironmentStatusLogAsync(entity);

                    transaction.Commit();

                    response.Model = entity;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    response.DidError     = true;
                    response.ErrorMessage = ex.Message;
                }
            }

            return(response);
        }
        public async Task <ISingleViewModelResponse <ServiceEnvironmentStatus> > GetServiceStatusAsync(ServiceEnvironmentStatus entity)
        {
            Logger?.LogDebug("'{0}' has been invoked", nameof(GetServiceStatusAsync));

            var response = new SingleViewModelResponse <ServiceEnvironmentStatus>();

            try
            {
                response.Model = await Repository
                                 .GetServiceEnvironmentStatusAsync(entity);
            }
            catch (Exception ex)
            {
                response.SetError(Logger, ex);
            }

            return(response);
        }