public void InsertScheduleParameter()
        {
            ScheduleParameter beforeScheduleParameter = _scheduleService.InsertScheduleParameter("2826018c-69cc-4ead-946b-70bb5a47ab02", "test1", "value1");

            Assert.IsNotNull(beforeScheduleParameter);

            ScheduleParameter failingScheduleParameter = _scheduleService.InsertScheduleParameter("99", "test2", "value2");

            Assert.IsNull(failingScheduleParameter);
        }
Esempio n. 2
0
        public ActionResult Create(ScheduleParameter parameters)
        {
            var viewModel   = MapFromClientParameters(parameters);
            var entity      = viewModel.MapTo <Schedule>();
            var savedEntity = MasterFileService.Add(entity);

            if (savedEntity.WarningInfo != null && !savedEntity.Confirm.GetValueOrDefault())
            {
                return(Json(new { savedEntity.Id, entity.WarningInfo, Error = "ErrorWarning" }, JsonRequestBehavior.DenyGet));
            }
            return(Json(new { savedEntity.Id }, JsonRequestBehavior.DenyGet));
        }
Esempio n. 3
0
        public ScheduleParameter Insert(ScheduleParameter scheduleParameter)
        {
            try
            {
                _context.ScheduleParameters.Add(scheduleParameter);
                Save();

                return(scheduleParameter);
            }
            catch (Exception ex)
            {
                _log.Error("Insert(): Unable to add new schedule parameter", ex);

                return(null);
            }
        }
Esempio n. 4
0
        public ScheduleParameter InsertScheduleParameter(String scheduleId, String name, String value)
        {
            Schedule schedule = _scheduleDataAccess.Get(scheduleId);

            if (schedule != null)
            {
                ScheduleParameter scheduleParameter = new ScheduleParameter();
                scheduleParameter.Schedule = schedule;
                scheduleParameter.Name     = name;
                scheduleParameter.Value    = value;

                return(_scheduleParameterDataAccess.Insert(scheduleParameter));
            }
            else
            {
                _log.Info("InsertScheduleParameter(" + scheduleId + "): Unable to find schedule");

                return(null);
            }
        }
Esempio n. 5
0
        public ActionResult Update(ScheduleParameter parameters)
        {
            var viewModel = MapFromClientParameters(parameters);

            byte[] lastModified = null;

            if (ModelState.IsValid)
            {
                var entity = MasterFileService.GetById(viewModel.SharedViewModel.Id);

                var mappedEntity = viewModel.MapPropertiesToInstance(entity);
                lastModified = MasterFileService.Update(mappedEntity).LastModified;
                if (entity.WarningInfo != null && !entity.Confirm.GetValueOrDefault())
                {
                    return(Json(new { entity.Id, LastModified = lastModified, entity.WarningInfo, Error = "ErrorWarning" }, JsonRequestBehavior.DenyGet));
                }
                return(Json(new { entity.Id, LastModified = lastModified }, JsonRequestBehavior.DenyGet));
            }

            return(Json(new { Error = string.Empty, Data = new { LastModified = lastModified } }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 6
0
        public async Task <IActionResult> Put(string id, [FromBody] CreateScheduleViewModel request)
        {
            try
            {
                //validate the cron expression
                if (!string.IsNullOrWhiteSpace(request.CRONExpression))
                {
                    try
                    {
                        CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard);
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message));
                        return(BadRequest(ModelState));
                    }
                }

                Guid entityId = new Guid(id);

                var existingSchedule = repository.GetOne(entityId);
                if (existingSchedule == null)
                {
                    return(NotFound());
                }

                existingSchedule.Name           = request.Name;
                existingSchedule.AgentId        = request.AgentId;
                existingSchedule.CRONExpression = request.CRONExpression;
                existingSchedule.LastExecution  = request.LastExecution;
                existingSchedule.NextExecution  = request.NextExecution;
                existingSchedule.IsDisabled     = request.IsDisabled;
                existingSchedule.ProjectId      = request.ProjectId;
                existingSchedule.StartingType   = request.StartingType;
                existingSchedule.Status         = request.Status;
                existingSchedule.ExpiryDate     = request.ExpiryDate;
                existingSchedule.StartDate      = request.StartDate;
                existingSchedule.AutomationId   = request.AutomationId;

                var response = await base.PutEntity(id, existingSchedule);

                manager.DeleteExistingParameters(entityId);

                var set = new HashSet <string>();
                foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>())
                {
                    if (!set.Add(parameter.Name))
                    {
                        ModelState.AddModelError("ScheduleParameter", "ScheduleParameter Name Already Exists");
                        return(BadRequest(ModelState));
                    }

                    ScheduleParameter scheduleParameter = new ScheduleParameter
                    {
                        Name       = parameter.Name,
                        DataType   = parameter.DataType,
                        Value      = parameter.Value,
                        ScheduleId = entityId,
                        CreatedBy  = applicationUser?.UserName,
                        CreatedOn  = DateTime.UtcNow,
                        Id         = Guid.NewGuid()
                    };
                    scheduleParameterRepository.Add(scheduleParameter);
                }

                recurringJobManager.RemoveIfExists(existingSchedule.Id?.ToString());

                if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual"))
                {
                    var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(existingSchedule);

                    backgroundJobClient.Schedule(() => hubManager.ScheduleNewJob(jsonScheduleObj),
                                                 new DateTimeOffset(existingSchedule.StartDate.Value));
                }

                return(response);
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Schedule", ex.Message);
                return(BadRequest(ModelState));
            }
        }
Esempio n. 7
0
        public async Task <IActionResult> Post([FromBody] CreateScheduleViewModel request)
        {
            if (request == null)
            {
                ModelState.AddModelError("Save", "No data passed");
                return(BadRequest(ModelState));
            }

            //validate the cron expression
            if (!string.IsNullOrWhiteSpace(request.CRONExpression))
            {
                try
                {
                    CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard);
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message));
                    return(BadRequest(ModelState));
                }
            }

            Guid entityId = Guid.NewGuid();

            if (request.Id == null || !request.Id.HasValue || request.Id.Equals(Guid.Empty))
            {
                request.Id = entityId;
            }

            try
            {
                Schedule requestObj = request.Map(request); //assign request to schedule entity

                foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>())
                {
                    ScheduleParameter scheduleParameter = new ScheduleParameter
                    {
                        Name       = parameter.Name,
                        DataType   = parameter.DataType,
                        Value      = parameter.Value,
                        ScheduleId = entityId,
                        CreatedBy  = applicationUser?.UserName,
                        CreatedOn  = DateTime.UtcNow,
                        Id         = Guid.NewGuid()
                    };
                    scheduleParameterRepository.Add(scheduleParameter);
                }

                var response = await base.PostEntity(requestObj);

                recurringJobManager.RemoveIfExists(requestObj.Id?.ToString());

                if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual"))
                {
                    var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(requestObj);

                    backgroundJobClient.Schedule(() => hubManager.ScheduleNewJob(jsonScheduleObj),
                                                 new DateTimeOffset(requestObj.StartDate.Value));
                }

                return(response);
            }
            catch (Exception ex)
            {
                return(ex.GetActionResult());
            }
        }
Esempio n. 8
0
        public async Task <IActionResult> Put(string id, [FromBody] CreateScheduleViewModel request)
        {
            try
            {
                ParametersViewModel.VerifyParameterNameAvailability(request.Parameters);
                //validate the cron expression
                if (!string.IsNullOrWhiteSpace(request.CRONExpression))
                {
                    if (string.IsNullOrWhiteSpace(request.CRONExpressionTimeZone))
                    {
                        request.CRONExpressionTimeZone = "UTC";
                    }
                    try
                    {
                        CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard);
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message));
                        return(BadRequest(ModelState));
                    }
                }

                Schedule existingSchedule = _manager.UpdateSchedule(id, request);
                var      response         = await base.PutEntity(id, existingSchedule);

                _manager.DeleteExistingParameters(id);

                var set = new HashSet <string>();
                foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>())
                {
                    if (!set.Add(parameter.Name))
                    {
                        ModelState.AddModelError("ScheduleParameter", "ScheduleParameter Name Already Exists");
                        return(BadRequest(ModelState));
                    }

                    ScheduleParameter scheduleParameter = new ScheduleParameter
                    {
                        Name       = parameter.Name,
                        DataType   = parameter.DataType,
                        Value      = parameter.Value,
                        ScheduleId = existingSchedule.Id.Value,
                        CreatedBy  = applicationUser?.UserName,
                        CreatedOn  = DateTime.UtcNow,
                        Id         = Guid.NewGuid()
                    };
                    _scheduleParameterRepository.Add(scheduleParameter);
                }

                _recurringJobManager.RemoveIfExists(existingSchedule.Id?.ToString());

                if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual"))
                {
                    var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(existingSchedule);

                    _backgroundJobClient.Schedule(() => _hubManager.ScheduleNewJob(jsonScheduleObj),
                                                  new DateTimeOffset(existingSchedule.StartDate.Value));
                }

                return(response);
            }
            catch (Exception ex)
            {
                return(ex.GetActionResult());
            }
        }
Esempio n. 9
0
        public async Task <IActionResult> Post([FromBody] CreateScheduleViewModel request)
        {
            ParametersViewModel.VerifyParameterNameAvailability(request.Parameters);
            if (request == null)
            {
                ModelState.AddModelError("Save", "No data passed");
                return(BadRequest(ModelState));
            }

            //validate the cron expression
            if (!string.IsNullOrWhiteSpace(request.CRONExpression))
            {
                if (string.IsNullOrWhiteSpace(request.CRONExpressionTimeZone))
                {
                    request.CRONExpressionTimeZone = "UTC";
                }
                try
                {
                    CronExpression expression = CronExpression.Parse(request.CRONExpression, CronFormat.Standard);
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("Save", string.Concat("Invalid cron expression, ", ex.Message));
                    return(BadRequest(ModelState));
                }
            }

            Guid entityId = Guid.NewGuid();

            if (request.Id == null || !request.Id.HasValue || request.Id.Equals(Guid.Empty))
            {
                request.Id = entityId;
            }

            try
            {
                if (request.StartingType.ToLower() == "queuearrival")
                {
                    if (request.QueueId == null)
                    {
                        throw new EntityOperationException("Schedule of starting type \"QueueArrival\" must contain a Queue id");
                    }
                }

                Schedule newSchedule = _manager.AddSchedule(request);

                foreach (var parameter in request.Parameters ?? Enumerable.Empty <ParametersViewModel>())
                {
                    ScheduleParameter scheduleParameter = new ScheduleParameter
                    {
                        Name       = parameter.Name,
                        DataType   = parameter.DataType,
                        Value      = parameter.Value,
                        ScheduleId = entityId,
                        CreatedBy  = applicationUser?.UserName,
                        CreatedOn  = DateTime.UtcNow,
                        Id         = Guid.NewGuid()
                    };
                    _scheduleParameterRepository.Add(scheduleParameter);
                }

                var response = await base.PostEntity(newSchedule);

                _recurringJobManager.RemoveIfExists(newSchedule.Id?.ToString());

                if (request.IsDisabled == false && !request.StartingType.ToLower().Equals("manual"))//if schedule is not a manual starting type
                {
                    var jsonScheduleObj = JsonSerializer.Serialize <Schedule>(newSchedule);

                    _backgroundJobClient.Schedule(() => _hubManager.ScheduleNewJob(jsonScheduleObj),
                                                  new DateTimeOffset(newSchedule.StartDate.Value));
                }

                return(response);
            }
            catch (Exception ex)
            {
                return(ex.GetActionResult());
            }
        }