Beispiel #1
0
        public ApiHttpResponse PostContact([FromBody] ContactViewModel contactViewModel)
        {
            ApiHttpResponse apiHttpResponse = new ApiHttpResponse();

            if (!ModelState.IsValid)
            {
                apiHttpResponse.HttpStatusCode = HttpStatusCode.BadRequest;
                return(apiHttpResponse);
            }

            try
            {
                ContactViewModel contactViewModelResponse = _contactAppService.AddContact(contactViewModel);
                if (contactViewModelResponse.ContactId != 0)
                {
                    apiHttpResponse.HttpStatusCode = HttpStatusCode.OK;
                    apiHttpResponse.Response       = contactViewModelResponse;
                }
            }
            catch (Exception ex)
            {
                return(CreateErrorResponse(ex));
            }

            return(apiHttpResponse);
        }
Beispiel #2
0
        public HttpResponseMessage CallsList([FromBody] ApiHttpRequest <DbFiltersCollection> request)
        {
            //var filtersString = HttpUtility.ParseQueryString(Request.RequestUri.Query)["filters"];
            //var filters = !string.IsNullOrEmpty(filtersString) ? filtersString.Deserialize<Dictionary<string, object>>() : new Dictionary<string, object>();
            var filters  = request.data;
            var response = new ApiHttpResponse <HttpDataList <Call> >();
            var username = Request.Username();
            var _context = new QuartzExecutionDataContext();

            try
            {
                var account = _context.Accounts
                              .FirstOrDefault(x => x.Username == username);
                var dbCalls = (from ser in _context.Servers
                               join job in _context.Jobs on ser.ServerID equals job.ServerID
                               join cal in _context.Calls on job.JobID equals cal.JobID
                               join accser in _context.AccountServers on ser.ServerID equals accser.ServerID
                               join acc in _context.Accounts on accser.AccountID equals acc.AccountID
                               where (acc.Username == username && account.Roles == RoleType.Client) ||
                               (account.Roles == RoleType.Admin || account.Roles == RoleType.Inspector)
                               select cal)
                              .Distinct()
                              .Filter(filters);
                response.data.result = dbCalls.ToList();
                response.Complete(ResultCode.OK, "");
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        public HttpResponseMessage Login(Account account)
        {
            var response = new ApiHttpResponse <LoginInfo>();

            try
            {
                var httpService = new HttpComunicationService();
                var wsResponse  = httpService.Post <ApiHttpResponse <HttpDataSingle <Account> > >(webApiUrl + "AccountsVerification/exists",
                                                                                                  "",
                                                                                                  "",
                                                                                                  false,
                                                                                                  account
                                                                                                  );
                if (wsResponse.operationResult.Code == HttpUtilities.Enumerators.ResultCode.OK)
                {
                    response.data = new LoginInfo
                    {
                        Account    = wsResponse.data.result,
                        SessionKey = HttpContext.Current.GetSessionKey(wsResponse.data.result)
                    };
                    response.Complete(HttpUtilities.Enumerators.ResultCode.OK);
                }
                else
                {
                    throw new AngularException(response.operationResult.Message, response.operationResult.Stack);
                }
            }
            catch (Exception ex)
            {
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        /// <summary>
        /// Generic Method to perform an HTTP GET Request
        /// </summary>
        public async Task <ApiHttpResponse <T> > GetDataAsync <T>(string Url, string jwt = null)
        {
            // Get a new http client object from the factory
            var httpClient = _httpClientFactory.CreateClient();

            // Add Token to Header if present
            if (!string.IsNullOrWhiteSpace(jwt))
            {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwt);
            }

            // Call the API
            var response = await httpClient.GetAsync(new Uri(Url));

            string jsonString = await response.Content.ReadAsStringAsync();

            // Create the return object
            var apiResponse = new ApiHttpResponse <T>()
            {
                StatusCode = response.StatusCode, ReasonPhrase = response.ReasonPhrase
            };

            if (response.IsSuccessStatusCode)
            {
                apiResponse.ApiData = _jsonService.FromJson <T>(jsonString);
            }
            else
            {
                apiResponse.ErrorApiResponse = _jsonService.FromJson <ApiResponse>(jsonString);
            }

            return(apiResponse);
        }
        public HttpResponseMessage AccountsList([FromBody] ApiHttpRequest <Dictionary <string, object> > request)
        {
            var filters  = request.data;
            var _context = new QuartzExecutionDataContext();
            var response = new ApiHttpResponse <HttpDataList <Account> >();
            var username = Request.Username();

            try
            {
                //only admin can see accounts
                Action _canProceed = () =>
                {
                    var accounts = _context.Accounts.Filter(filters);
                    response.data.result = accounts.ToList();
                    response.Complete(ResultCode.OK, "");
                };
                Action _else = () => response.Complete(ResultCode.OK, "Only admin and inspector can see Accounts");;

                _context.Accounts
                .Where(x => x.Username == username)
                .SingleOrDefault()
                .ProceedIf(x => x.IsAdminOrIspector, _canProceed, _else);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #6
0
        public HttpResponseMessage CallStart([FromUri] string jobKey, [FromBody] ApiHttpRequest <Call> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <bool> >();
            var call     = request.data;
            var _context = new QuartzExecutionDataContext();

            try
            {
                var appID    = Request.Username();
                var appToken = Request.Password();
                var dbServer = _context.Servers
                               .FirstOrDefault(x => x.AppId == appID && x.AppToken == appToken);

                if (dbServer != null)
                {
                    var dbJob = dbServer.Jobs.FirstOrDefault(x => x.Key == jobKey);
                    if (dbJob != null)
                    {
                        dbJob.Calls.Add(call);
                        dbJob.Executing = true;
                        _context.SaveChanges();
                        response.data.result = true;
                        response.Complete(ResultCode.OK, "");

                        try
                        {
                            WebSocketClient.SendMessage(new SocketMessage
                            {
                                Title       = "Job " + call.Job?.Key + " in esecuzione con instance ID : " + call.FireInstenceID,
                                DataType    = call.GetType(),
                                IsImportant = false,
                                Data        = call
                            });
                        }
                        catch (Exception ex) { LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex); }
                    }
                    else
                    {
                        throw new EntityNotExistsException("Job with key " + jobKey + " not exists");
                    }
                }
                else
                {
                    throw new EntityNotExistsException("Server with key " + Request.Username() + " not exists");
                }
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        public HttpResponseMessage Logout([FromBody] dynamic request)
        {
            var response = new ApiHttpResponse <bool>();

            HttpContext.Current.RemoveSessionKey((string)request.accountID);
            response.data = HttpContext.Current.ExistsSessionKey((string)request.sessionKey, (string)request.accountID);
            response.Complete(HttpUtilities.Enumerators.ResultCode.OK);
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #8
0
        public HttpResponseMessage Add([FromUri] long accountID, [FromBody]  ApiHttpRequest <Server> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <Server> >();
            var server   = request.data;
            var username = Request.Username();

            var _context = new QuartzExecutionDataContext();

            try
            {
                /* only admin and inspector can add clients */
                Action _canProceed = () =>
                {
                    var account = _context.Accounts
                                  .SingleOrDefault(x => x.AccountID == accountID);

                    if (account != null)
                    {
                        if (_context.Servers.FirstOrDefault(x => x.Name == server.Name && x.IP == server.IP) == null)
                        {
                            /*_context.Servers.Add(server);*/
                            account.Servers.Add(server);
                            _context.SaveChanges();
                            response.data.result = _context.Servers.FirstOrDefault(x => x.Name == server.Name && x.IP == server.IP);
                            response.Complete(ResultCode.OK, "Server succefully added");
                        }
                        else
                        {
                            throw new EntityDuplicationException("Already exists server with name: " + server.Name + " and ip: " + server.IP);
                        }
                    }
                    else
                    {
                        throw new EntityNotExistsException("No account exists for id: " + accountID);
                    }
                };
                Action _else = () => response.Complete(ResultCode.OK, "Only admin and inspector can add servers");
                _context.Accounts
                .Where(x => x.Username == username)
                .SingleOrDefault()
                .ProceedIf(x => x.IsAdminOrIspector, _canProceed, _else);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        public HttpResponseMessage JobsList([FromBody] ApiHttpRequest <Dictionary <string, object> > request)
        {
            //var filtersString = HttpUtility.ParseQueryString(Request.RequestUri.Query)["filters"];
            //var filters = !string.IsNullOrEmpty(filtersString) ? filtersString.Deserialize<Dictionary<string, object>>() : new Dictionary<string, object>();
            var filters = request.data;

            var response = new ApiHttpResponse <HttpDataList <dynamic> >();
            var username = Request.Username();
            var _context = new QuartzExecutionDataContext();

            try
            {
                var account = _context.Accounts
                              .FirstOrDefault(x => x.Username == username);
                var jobs = (from ser in _context.Servers
                            join job in _context.Jobs on ser.ServerID equals job.ServerID
                            join accser in _context.AccountServers on ser.ServerID equals accser.ServerID
                            join acc in _context.Accounts on accser.AccountID equals acc.AccountID
                            where (acc.Username == username && account.Roles == RoleType.Client) ||
                            (account.Roles == RoleType.Admin || account.Roles == RoleType.Inspector)
                            select new {
                    JobID = job.JobID,
                    Key = job.Key,
                    Description = job.Description,
                    Executing = job.Executing,
                    ServerID = job.ServerID,
                    StartedAt = job.StartedAt,
                    IsExecutingCorrectly = DateTime.Now <= DbFunctions.AddMinutes(job.Calls.OrderByDescending(x => x.EndedAt).FirstOrDefault().NextStart, 1),
                    LastCall = job.Calls.OrderByDescending(x => x.EndedAt).FirstOrDefault()
                })
                           .Distinct()
                           .Filter(filters)
                           .OrderByDescending(x => x.LastCall.StartedAt);


                //var jobList = jobs?
                //    .OrderByDescending(x => x.LastCall.StartedAt);
                //jobList.ForEach(x => x.Calls.Take(1));
                response.data.result = jobs.ToList <dynamic>();
                response.Complete(ResultCode.OK, "");
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #10
0
        public ApiHttpResponse DeleteContact(long id)
        {
            ApiHttpResponse apiHttpResponse = new ApiHttpResponse();

            try
            {
                _contactAppService.DeleteContact(id);
                apiHttpResponse.HttpStatusCode = HttpStatusCode.OK;
            }
            catch (Exception ex)
            {
                return(CreateErrorResponse(ex));
            }

            return(apiHttpResponse);
        }
        public HttpResponseMessage UpdateJob([FromBody] ApiHttpRequest <Job> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <Job> >();
            var job      = request.data;
            var username = Request.Username();
            var _context = new QuartzExecutionDataContext();

            try
            {
                var appID    = Request.Username();
                var appToken = Request.Password();
                var dbServer = _context.Servers
                               .FirstOrDefault(x => x.AppId == appID && x.AppToken == appToken);

                if (dbServer != null)
                {
                    var dbJob = dbServer.Jobs.FirstOrDefault(x => x.Key == job.Key);
                    if (dbJob != null)
                    {
                        dbJob.StartedAt = job.StartedAt;
                        dbJob.Executing = job.Executing;
                        _context.SaveChanges();
                        response.Complete(ResultCode.OK, "");
                    }
                    else
                    {
                        throw new EntityNotExistsException(job.Key);
                    }
                    response.data.result = dbServer.Jobs.FirstOrDefault(x => x.Key == job.Key);
                }
                else
                {
                    throw new EntityNotExistsException("Client with key " + Request.Username() + " not exists");
                }
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #12
0
        public HttpResponseMessage Delete([FromBody] ApiHttpRequest <Server> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <bool> >();
            var server   = request.data;
            var username = Request.Username();

            var _context = new QuartzExecutionDataContext();

            try
            {
                /* only admin and inspector can delete clients */
                Action _canProceed = () =>
                {
                    var dbClient = _context.Servers.FirstOrDefault(x => x.Name == server.Name && x.IP == server.IP);
                    if (dbClient != null)
                    {
                        _context.Servers.Remove(dbClient);
                        _context.SaveChanges();
                        response.data.result = true;
                        response.Complete(ResultCode.OK, "Client succefully Deleted");
                    }
                    else
                    {
                        throw new EntityNotExistsException("Not exists Client with Name " + server.Name + " and ip " + server.IP);
                    }
                };
                Action _else = () => response.Complete(ResultCode.OK, "Only admin and inspector can delete clients");
                _context.Accounts
                .Where(x => x.Username == username)
                .SingleOrDefault()
                .ProceedIf(x => x.IsAdminOrIspector, _canProceed, _else);
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (Exception ex1)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex1.Message, ex1);
                response.Fault(ex1);
            }

            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #13
0
        public HttpResponseMessage GenerateAppToken([FromUri] long serverID)
        {
            var response = new ApiHttpResponse <HttpDataSingle <string> >();
            var username = Request.Username();
            var _context = new QuartzExecutionDataContext();

            try
            {
                /* only admin and inspector can generate app token */
                Action _canProceed = () => {
                    var appIdTemplate = "{0}-{1}-{2}-{3}";
                    var dbClient      = _context.Servers.FirstOrDefault(x => x.ServerID == serverID);
                    if (dbClient == null)
                    {
                        throw new EntityNotExistsException("Not exists Client with id: " + serverID);
                    }
                    var appToken       = string.Format(appIdTemplate, dbClient.Name, dbClient.IP, dbClient.AppId, Guid.NewGuid()).Replace(":", "");
                    var appTokenBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(appToken));
                    dbClient.AppToken = appTokenBase64;
                    _context.SaveChanges();
                    response.data.result = appTokenBase64;
                    response.Complete(ResultCode.OK, "Application Token Generated");
                };

                Action _else = () => response.Complete(ResultCode.OK, "Only admin and inspector can generate app token");

                _context.Accounts
                .Where(x => x.Username == username)
                .SingleOrDefault()
                .ProceedIf(x => x.IsAdminOrIspector, _canProceed, _else);
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #14
0
        public HttpResponseMessage Update([FromUri] long serverID, [FromBody] ApiHttpRequest <Server> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <Server> >();
            var server   = request.data;
            var username = Request.Username();

            var _context = new QuartzExecutionDataContext();

            try
            {
                /* only admin and inspector can update clients */
                Action _canProceed = () =>
                {
                    var dbClient = _context.Servers.FirstOrDefault(x => x.ServerID == serverID);
                    if (dbClient != null)
                    {
                        dbClient.Name     = server.Name;
                        dbClient.IP       = server.IP;
                        dbClient.AppId    = string.Empty;
                        dbClient.AppToken = string.Empty;
                        _context.SaveChanges();
                        response.data.result = dbClient;
                        response.Complete(ResultCode.OK, "Server succefully Updated");
                    }
                    else
                    {
                        throw new EntityNotExistsException("Not exists server with Name " + server.Name + " and ip " + server.IP);
                    }
                };
                Action _else = () => response.Complete(ResultCode.OK, "Only admin and inspector update add clients");
                _context.Accounts
                .Where(x => x.Username == username)
                .SingleOrDefault()
                .ProceedIf(x => x.IsAdminOrIspector, _canProceed, _else);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        public HttpResponseMessage Exists([FromBody] Account account)
        {
            var response = new ApiHttpResponse <HttpDataSingle <Account> >();
            var _context = new QuartzExecutionDataContext();

            try
            {
                var dbAccount = _context.Accounts
                                .Where(x => x.Username == account.Username && x.Password == account.Password)
                                .SingleOrDefault();
                response.data.result = dbAccount;
                response.Complete(ResultCode.OK, string.Empty);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        public HttpResponseMessage Add([FromBody] ApiHttpRequest <Account> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <bool> >();
            var username = Request.Username();
            var account  = request.data;
            var _context = new QuartzExecutionDataContext();

            try
            {
                Action _canProceed = () =>
                {
                    var dbAccount = _context.Accounts.Where(x => x.Username == account.Username).SingleOrDefault();
                    if (dbAccount == null)
                    {
                        _context.Accounts.Add(account);
                        _context.SaveChanges();
                    }
                    else
                    {
                        throw new EntityDuplicationException("Account alredy exists with username " + account.Username);
                    }
                };
                Action _else = () => response.Complete(ResultCode.OK, "Only admin and inspector can see Accounts");

                _context.Accounts.
                Where(x => x.Username == username)
                .SingleOrDefault()
                .ProceedIf(x => x.IsAdminOrIspector, _canProceed, _else);
            }
            catch (EntityDuplicationException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Complete(ResultCode.OK, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #17
0
        public ApiHttpResponse PutContact(long id, ContactViewModel contactViewModel)
        {
            ApiHttpResponse apiHttpResponse = new ApiHttpResponse();

            if (id != contactViewModel.ContactId)
            {
                apiHttpResponse.HttpStatusCode = HttpStatusCode.BadRequest;
                return(apiHttpResponse);
            }

            try
            {
                _contactAppService.UpdateContact(contactViewModel);
                apiHttpResponse.HttpStatusCode = HttpStatusCode.NoContent;
            }
            catch (Exception ex)
            {
                return(CreateErrorResponse(ex));
            }

            return(apiHttpResponse);
        }
Beispiel #18
0
        public HttpResponseMessage Create([FromUri] string username, [FromUri] string password, [FromUri] string serverName)
        {
            var response = new ApiHttpResponse <HttpDataSingle <Dictionary <string, string> > >();
            var _context = new QuartzExecutionDataContext();

            try
            {
                //Authentication Check
                var account = _context.Accounts
                              .Where(x => x.Username == username && x.Password == password).SingleOrDefault();
                if (account != null)
                {
                    var _server = _context.Servers
                                  .Where(x => x.Name == serverName)
                                  .SingleOrDefault();

                    if (_server == null)
                    {
                        var server = new Server
                        {
                            Name = serverName,
                            IP   = HttpContext.Current.Request.UserHostAddress
                        };
                        _context.Servers.Add(server);
                        _context.AccountServers.Add(new AccountServer {
                            AccountID = account.AccountID, ServerID = server.ServerID
                        });
                        _context.SaveChanges();


                        var appIdTemplate    = "{0}-{1}-{2}";
                        var appTokenTemplate = "{0}-{1}-{2}-{3}";
                        if (server == null)
                        {
                            throw new EntityNotExistsException("Not found server with name: " + serverName);
                        }

                        var appId          = string.Format(appIdTemplate, server.Name, server.IP, Guid.NewGuid()).Replace(":", "");
                        var appToken       = string.Format(appTokenTemplate, server.Name, server.IP, appId, Guid.NewGuid()).Replace(":", "");
                        var appTokenBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(appToken));

                        server.AppId    = appId;
                        server.AppToken = appTokenBase64;
                        _context.SaveChanges();


                        response.data.result = new Dictionary <string, string>();
                        response.data.result.Add("AppID", server.AppId);
                        response.data.result.Add("AppToken", server.AppToken);
                        response.Complete(ResultCode.OK, "Server Created");

                        try
                        {
                            WebSocketClient.SendMessage(new SocketMessage
                            {
                                Title       = "Nuovo Server " + server.Name + " con ip " + server.IP + " creato da " + username,
                                DataType    = server.GetType(),
                                IsImportant = false,
                                Data        = server
                            });
                        }
                        catch (Exception ex) { LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex); }
                    }
                    else
                    {
                        var server = _context.Servers.FirstOrDefault(x => x.Name == serverName);
                        response.data.result = new Dictionary <string, string>();
                        response.data.result.Add("AppID", server.AppId);
                        response.data.result.Add("AppToken", server.AppToken);

                        throw new EntityDuplicationException("Already exists server with name: " + serverName);
                    }
                }
                else
                {
                    response.NotAuthorized("Bad credentials for: " + username);
                }
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (EntityDuplicationException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Complete(ResultCode.KO, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
        public HttpResponseMessage AddJob([FromBody] ApiHttpRequest <Job> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <long> >();
            var job      = request.data;
            var _context = new QuartzExecutionDataContext();

            try
            {
                var appID    = Request.Username();
                var appToken = Request.Password();
                var dbServer = _context.Servers
                               .FirstOrDefault(x => x.AppId == appID && x.AppToken == appToken);

                if (dbServer != null)
                {
                    if (dbServer.Jobs.FirstOrDefault(x => x.Key.ToLower() == job.Key.ToLower()) == null)
                    {
                        job.Server   = dbServer;
                        job.ServerID = dbServer.ServerID;
                        _context.Jobs.Add(job);
                        _context.SaveChanges();
                        response.Complete(ResultCode.OK, "");

                        try
                        {
                            WebSocketClient.SendMessage(new SocketMessage
                            {
                                Title       = "Nuovo Job " + job.Key + " per server " + job.Server?.Name,
                                DataType    = job.GetType(),
                                IsImportant = false,
                                Data        = job
                            });
                        }
                        catch (Exception ex) { LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex); }
                    }
                    else
                    {
                        throw new EntityDuplicationException("Job alredy exists with key " + job.Key);
                    }
                    response.data.result = dbServer.Jobs.FirstOrDefault(x => x.Key == job.Key).JobID;
                }
                else
                {
                    throw new EntityNotExistsException("Client with key " + Request.Username() + " not exists");
                }
            }
            catch (EntityDuplicationException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Complete(ResultCode.OK, ex.Message);
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }
Beispiel #20
0
 public GreenMobilityLoginException(string message, ApiHttpResponse response) : base(message)
 {
     HttpResponse = response ?? throw new ArgumentNullException(nameof(HttpResponse));
 }
Beispiel #21
0
 internal ApiResponse(ApiHttpResponse httpResponse, T result)
     : base(httpResponse)
 {
     Result = result;
 }
Beispiel #22
0
        public HttpResponseMessage CallEnd([FromUri] string jobKey, [FromBody] ApiHttpRequest <Call> request)
        {
            var response = new ApiHttpResponse <HttpDataSingle <bool> >();
            var call     = request.data;
            var _context = new QuartzExecutionDataContext();

            try
            {
                var appID    = Request.Username();
                var appToken = Request.Password();
                var dbServer = _context.Servers
                               .FirstOrDefault(x => x.AppId == appID && x.AppToken == appToken);

                if (dbServer != null)
                {
                    var dbCall = (from job in dbServer.Jobs
                                  join cal in _context.Calls on job.JobID equals cal.JobID
                                  where job.Key == jobKey &&
                                  cal.FireInstenceID == call.FireInstenceID
                                  select cal
                                  ).FirstOrDefault();
                    if (dbCall != null)
                    {
                        dbCall.EndedAt       = call.EndedAt;
                        dbCall.Error         = call.Error;
                        dbCall.Job.Executing = false;
                        _context.SaveChanges();
                        response.data.result = true;
                        response.Complete(ResultCode.OK, "");
                        try
                        {
                            WebSocketClient.SendMessage(new SocketMessage
                            {
                                Title       = "Job " + dbCall.Job?.Key + " terminato con instance ID : " + call.FireInstenceID,
                                DataType    = call.GetType(),
                                IsImportant = call.Error != null,
                                Data        = call
                            });
                        }
                        catch (Exception ex) { LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex); }
                    }
                    else
                    {
                        throw new EntityNotExistsException("Call with fire instance id " + call.FireInstenceID + " not exists");
                    }
                }
                else
                {
                    throw new EntityNotExistsException("Client with key " + Request.Username() + " not exists");
                }
            }
            catch (EntityNotExistsException ex)
            {
                LogsAppendersManager.Instance.Debug(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message);
                response.Warning(System.Net.HttpStatusCode.NotFound, ex.Message);
            }
            catch (Exception ex)
            {
                LogsAppendersManager.Instance.Error(this.GetType(), MethodBase.GetCurrentMethod(), ex.Message, ex);
                response.Fault(ex);
            }
            return(Request.CreateResponse(response.Code, response));
        }