/// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult Sql(Context context)
        {
            if (!Mime.ValidateOnApi(contentType: context.ContentType))
            {
                return(ApiResults.BadRequest(context: context));
            }
            var extendedApi = context.RequestDataString.Deserialize <ExtendedApi>();

            if (extendedApi == null)
            {
                return(ApiResults.BadRequest(context: context));
            }
            var data = ExecuteDataSetAsDictionary(
                context: context,
                name: extendedApi.Name,
                _params: extendedApi.Params);

            if (data == null)
            {
                return(ApiResults.BadRequest(context: context));
            }
            return(ApiResults.Get(
                       statusCode: 200,
                       limitPerDate: 0,
                       limitRemaining: 0,
                       response: new
            {
                Data = data
            }));
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult SetByApi(Context context)
        {
            var api = context.RequestDataString.Deserialize <SessionApi>();

            if (api == null || api.SessionKey.IsNullOrEmpty() || api.SessionValue.IsNullOrEmpty())
            {
                return(ApiResults.Get(ApiResponses.BadRequest(context: context)));
            }
            try
            {
                SetUserArea(
                    context: context,
                    key: api.SessionKey,
                    value: api.SessionValue,
                    page: false);
            }
            catch
            {
                return(ApiResults.Get(ApiResponses.Error(context, new ErrorData(Error.Types.InternalServerError))));
            }
            return(ApiResults.Get(new
            {
                StatusCode = 200,
                Response = new
                {
                    context.UserId,
                    Key = api.SessionKey
                }
            }.ToJson()));
        }
示例#3
0
        public System.Web.Mvc.ContentResult GetByApi()
        {
            SetSite();
            switch (Site.ReferenceType)
            {
            case "Issues":
                if (SiteId == ReferenceId)
                {
                    return(IssueUtilities.GetByApi(
                               ss: Site.IssuesSiteSettings(ReferenceId)));
                }
                else
                {
                    return(IssueUtilities.GetByApi(
                               ss: Site.IssuesSiteSettings(ReferenceId),
                               issueId: ReferenceId));
                }

            case "Results":
                if (SiteId == ReferenceId)
                {
                    return(ResultUtilities.GetByApi(
                               ss: Site.ResultsSiteSettings(ReferenceId)));
                }
                else
                {
                    return(ResultUtilities.GetByApi(
                               ss: Site.ResultsSiteSettings(ReferenceId),
                               resultId: ReferenceId));
                }

            default: return(ApiResults.Get(ApiResponses.BadRequest()));
            }
        }
示例#4
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult GetByApi(Context context)
        {
            var api = context.RequestDataString.Deserialize <SessionApi>();

            if (api == null || api.SessionKey.IsNullOrEmpty())
            {
                return(ApiResults.Get(ApiResponses.BadRequest(context: context)));
            }
            var value = GetUserArea(
                context: context,
                key: api.SessionKey,
                useUserSessionData: api.SavePerUser);

            if (value == null)
            {
                return(ApiResults.Get(ApiResponses.NotFound(context)));
            }
            return(ApiResults.Get(new
            {
                StatusCode = 200,
                Response = new
                {
                    context.UserId,
                    Key = api.SessionKey,
                    Value = value
                }
            }.ToJson()));
        }
示例#5
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult DeleteByApi(Context context)
        {
            var api = context.RequestDataString.Deserialize <SessionApi>();

            if (api == null || api.SessionKey.IsNullOrEmpty())
            {
                return(ApiResults.Get(ApiResponses.BadRequest(context: context)));
            }
            if (GetUserArea(context, api.SessionKey, api.SavePerUser) == null)
            {
                return(ApiResults.Get(ApiResponses.NotFound(context)));
            }
            try
            {
                DeleteUserArea(
                    context: context,
                    key: api.SessionKey,
                    page: false,
                    sessionGuid: api.SavePerUser ? "@" + context.UserId : context.SessionGuid);
            }
            catch
            {
                return(ApiResults.Get(ApiResponses.Error(context, new ErrorData(Error.Types.InternalServerError))));
            }
            return(ApiResults.Get(new
            {
                StatusCode = 200,
                Response = new
                {
                    context.UserId,
                    Key = api.SessionKey
                }
            }.ToJson()));
        }
示例#6
0
 public System.Web.Mvc.ContentResult Create(Context context)
 {
     if (!context.ContractSettings.Attachments())
     {
         return null;
     }
     var statements = new List<SqlStatement>();
     statements.Add(Rds.InsertBinaries(
         selectIdentity: true,
         param: Rds.BinariesParam()
             .TenantId(context.TenantId)
             .ReferenceId(ReferenceId)
             .Guid(Guid)
             .Title(Name ?? FileName)
             .BinaryType("Attachments")
             .Bin(GetBin())
             .FileName(Name ?? FileName)
             .Extension(Extention)
             .Size(Size)
             .ContentType(ContentType)));
     var response = Repository.ExecuteScalar_response(
         context: context,
         transactional: true,
         selectIdentity: true,
         statements: statements.ToArray());
     return ApiResults.Success(
         id: response.Id.ToLong(),
         message: this.Guid);
 }
示例#7
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            var context = new Context();
            var api     = Forms.String().Deserialize <Api>();

            if (api?.ApiKey.IsNullOrEmpty() == false)
            {
                var userModel = new UserModel().Get(
                    context: context,
                    ss: null,
                    where : Rds.UsersWhere()
                    .ApiKey(api.ApiKey)
                    .Disabled(0));
                if (userModel.AccessStatus != Databases.AccessStatuses.Selected)
                {
                    filterContext.Result = ApiResults.Unauthorized();
                }
                else
                {
                    userModel.SetSession();
                    if (!Contract.Api(context: context))
                    {
                        Sessions.Abandon();
                        filterContext.Result = ApiResults.BadRequest();
                    }
                }
            }
            else if (!Sessions.LoggedIn())
            {
                filterContext.Result = ApiResults.Unauthorized();
            }
        }
示例#8
0
        /// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult Sql(Context context)
        {
            var extendedApi = context.RequestDataString.Deserialize <ExtendedApi>();

            if (extendedApi == null)
            {
                return(ApiResults.BadRequest(context: context));
            }
            var extendedSql = ExtensionWhere <ParameterAccessor.Parts.ExtendedSql>(
                context: context,
                extensions: Parameters.ExtendedSqls
                ?.Where(o => o.Api)
                .Where(o => o.Name == extendedApi.Name))
                              .FirstOrDefault();

            if (extendedSql == null)
            {
                return(ApiResults.BadRequest(context: context));
            }
            var param = new SqlParamCollection();

            extendedApi.Params?.ForEach(part =>
                                        param.Add(
                                            variableName: part.Key,
                                            value: part.Value));
            var dataSet = Rds.ExecuteDataSet(
                context: context,
                statements: new SqlStatement(
                    commandText: extendedSql.CommandText,
                    param: param));
            var data = new Dictionary <string, List <Dictionary <string, object> > >();

            foreach (DataTable dataTable in dataSet.Tables)
            {
                var table = new List <Dictionary <string, object> >();
                foreach (DataRow dataRow in dataTable.Rows)
                {
                    var row = new Dictionary <string, object>();
                    foreach (DataColumn dataColumn in dataTable.Columns)
                    {
                        row.AddIfNotConainsKey(
                            dataColumn.ColumnName,
                            dataRow[dataColumn.ColumnName]);
                    }
                    table.Add(row);
                }
                data.AddIfNotConainsKey(dataTable.TableName, table);
            }
            return(ApiResults.Get(
                       statusCode: 200,
                       limitPerDate: 0,
                       limitRemaining: 0,
                       response: new
            {
                Data = data
            }));
        }
        public ContentResult Delete(Context context, int id)
        {
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? new UserModel().DeleteByApi(context: context, userId: id)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result);
        }
        public ContentResult Get(Context context)
        {
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? new DeptModel().GetByApi(context: context)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result);
        }
示例#11
0
        public ContentResult Sql(Context context)
        {
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? ExtensionUtilities.Sql(context: context)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result);
        }
示例#12
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public static System.Web.Mvc.ContentResult ApiDonwload(Context context, string guid)
 {
     if (!Mime.ValidateOnApi(contentType: context.ContentType))
     {
         return(ApiResults.BadRequest(context: context));
     }
     if (!context.ContractSettings.Attachments())
     {
         return(null);
     }
     return(FileContentResults.DownloadByApi(context: context, guid: guid.ToUpper()));
 }
        public ContentResult Get(Context context, string guid)
        {
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? BinaryUtilities.ApiDonwload(
                context: context,
                guid: guid)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result);
        }
        public ContentResult Get(Context context, int id)
        {
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? DeptUtilities.GetByApi(
                context: context,
                ss: SiteSettingsUtilities.ApiDeptsSiteSettings(context),
                deptId: id)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result);
        }
示例#15
0
        public async Task <HttpResponseMessage> Delete()
        {
            var body = await Request.Content.ReadAsStringAsync();

            var context = new Context(apiRequestBody: body);
            var log     = new SysLogModel(context: context);
            var result  = context.Authenticated
                ? SessionUtilities.DeleteByApi(context: context)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result.ToHttpResponse(Request));
        }
示例#16
0
        public System.Web.Mvc.ContentResult CreateByApi()
        {
            SetSite();
            switch (Site.ReferenceType)
            {
            case "Issues": return(IssueUtilities.CreateByApi(
                                      ss: Site.IssuesSiteSettings(ReferenceId)));

            case "Results": return(ResultUtilities.CreateByApi(
                                       ss: Site.ResultsSiteSettings(ReferenceId)));

            default: return(ApiResults.Get(ApiResponses.BadRequest()));
            }
        }
示例#17
0
        public ContentResult Delete(Context context, int id)
        {
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? GroupUtilities.DeleteByApi(
                context: context,
                ss: SiteSettingsUtilities.ApiGroupsSiteSettings(context),
                groupId: id)
                : ApiResults.Unauthorized(context: context);

            log.Finish(
                context: context,
                responseSize: result.Content.Length);
            return(result);
        }
        public async Task <HttpResponseMessage> Sql()
        {
            var body = await Request.Content.ReadAsStringAsync();

            var context = new Context(
                sessionStatus: User?.Identity?.IsAuthenticated == true,
                sessionData: User?.Identity?.IsAuthenticated == true,
                apiRequestBody: body);
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? ExtensionUtilities.Sql(context: context)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result.ToHttpResponse(Request));
        }
示例#19
0
        public async Task <HttpResponseMessage> Export(long id)
        {
            var body = await Request.Content.ReadAsStringAsync();

            var context = new Context(
                sessionStatus: User?.Identity?.IsAuthenticated == true,
                sessionData: User?.Identity?.IsAuthenticated == true,
                apiRequestBody: body);
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? new ItemModel(context: context, referenceId: id).ExportByApi(context: context)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result.ToHttpResponse(Request));
        }
        public async Task <HttpResponseMessage> Get(string guid)
        {
            var body = await Request.Content.ReadAsStringAsync();

            var context = new Context(apiRequestBody: body);
            var log     = new SysLogModel(context: context);
            var result  = context.Authenticated
                ? BinaryUtilities.ApiDonwload(
                context: context,
                guid: guid)
                : ApiResults.Unauthorized(context: context);

            log.Finish(
                context: context,
                responseSize: result?.Content.Length ?? 0);
            return(result.ToHttpResponse(Request));
        }
        public async Task <HttpResponseMessage> Send(string reference, long id)
        {
            var body = await Request.Content.ReadAsStringAsync();

            var context = new Context(
                sessionStatus: User?.Identity?.IsAuthenticated == true,
                sessionData: User?.Identity?.IsAuthenticated == true,
                apiRequestBody: body,
                contentType: Request.Content.Headers.ContentType.MediaType);
            var log    = new SysLogModel(context: context);
            var result = context.Authenticated
                ? OutgoingMailUtilities.SendByApi(
                context: context,
                reference: reference,
                id: id)
                : ApiResults.Unauthorized(context: context);

            log.Finish(context: context, responseSize: result.Content.Length);
            return(result.ToHttpResponse(Request));
        }
        public ActionResult GetStream(Context context, string guid)
        {
            var log = new SysLogModel(context: context);

            if (!context.Authenticated)
            {
                return(ApiResults.Unauthorized(context: context));
            }
            var file = BinaryUtilities.Donwload(
                context: context,
                guid: guid.ToUpper());

            if (file == null)
            {
                return(ApiResults.NotFound(context: context));
            }
            var response = CreateFileSteramResult(file);

            log.Finish(
                context: context,
                responseSize: file?.Length ?? 0);
            return(response);
        }
示例#23
0
        public static async Task <ApiResults> GetUserRecordsAsync(string numRecords)
        {
            var    n       = null == numRecords ? "500" : numRecords;
            string baseUrl = "https://randomuser.me";
            string query   = $"/api/?results={n}&nat=us";

            //WebHelper.client.BaseAddress = new Uri(baseUrl);
            WebHelper.client.DefaultRequestHeaders.Accept.Clear();
            WebHelper.client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json")
                );

            ApiResults          records  = null;
            HttpResponseMessage response = await client.GetAsync(baseUrl + query);

            if (response.IsSuccessStatusCode)
            {
                string resp = await response.Content.ReadAsStringAsync();

                records = JsonConvert.DeserializeObject <ApiResults>(resp);
            }
            return(records);
        }
        /// <summary>
        /// Fixed:
        /// </summary>
        public static System.Web.Mvc.ContentResult SendByApi(Context context, string reference, long id)
        {
            var itemModel = new ItemModel(
                context: context,
                referenceId: id);
            var siteModel = new SiteModel(
                context: context,
                siteId: itemModel.SiteId);
            var ss = SiteSettingsUtilities.Get(
                context: context,
                siteModel: siteModel,
                referenceId: itemModel.ReferenceId);
            var outgoingMailModel = new OutgoingMailModel(
                context: context,
                reference: reference,
                referenceId: id);
            var data = context.RequestDataString.Deserialize <OutgoingMailApiModel>();

            if (data == null)
            {
                return(ApiResults.Get(ApiResponses.BadRequest(context: context)));
            }
            if (!siteModel.WithinApiLimits())
            {
                return(ApiResults.Get(ApiResponses.OverLimitApi(
                                          context: context,
                                          siteId: itemModel.SiteId,
                                          limitPerSite: Parameters.Api.LimitPerSite)));
            }
            if (data.From != null)
            {
                outgoingMailModel.From = new System.Net.Mail.MailAddress(data.From);
            }
            if (data.To != null)
            {
                outgoingMailModel.To = data.To;
            }
            if (data.Cc != null)
            {
                outgoingMailModel.Cc = data.Cc;
            }
            if (data.Bcc != null)
            {
                outgoingMailModel.Bcc = data.Bcc;
            }
            if (data.Title != null)
            {
                outgoingMailModel.Title = new Title(data.Title);
            }
            if (data.Body != null)
            {
                outgoingMailModel.Body = data.Body;
            }
            var invalid = OutgoingMailValidators.OnSending(
                context: context,
                ss: ss,
                outgoingMailModel: outgoingMailModel);

            switch (invalid.Type)
            {
            case Error.Types.None: break;

            default:
                return(ApiResults.Error(
                           context: context,
                           errorData: invalid));
            }
            var errorData = outgoingMailModel.Send(
                context: context,
                ss: ss);

            switch (errorData.Type)
            {
            case Error.Types.None:
                SiteUtilities.UpdateApiCount(context: context, ss: ss);
                return(ApiResults.Success(
                           id: id,
                           limitPerDate: Parameters.Api.LimitPerSite,
                           limitRemaining: Parameters.Api.LimitPerSite - ss.ApiCount,
                           message: Displays.MailTransmissionCompletion(
                               context: context,
                               data: outgoingMailModel.Title.DisplayValue)));

            default:
                return(ApiResults.Error(
                           context: context,
                           errorData: errorData));
            }
        }
        public ContentResult Upload(Context context, string guid)
        {
            var log = new SysLogModel(context: context);

            if (!context.Authenticated)
            {
                return(ApiResults.Unauthorized(context: context));
            }
            if (context.PostedFiles == null || context.PostedFiles.Count == 0)
            {
                return(ApiResults.BadRequest(context: context));
            }
            var    postedFile = context.PostedFiles[0];
            string filePath   = string.Empty;

            try
            {
                if (!guid.IsNullOrEmpty())
                {
                    guid = guid.ToUpper();
                    var referenceId = FileContentResults.GetReferenceId(
                        context: context,
                        guid: guid);
                    if (referenceId == 0)
                    {
                        return(ApiResults.NotFound(context: context));
                    }
                    var targetGuid = context.QueryStrings.Bool("overwrite")
                        ? guid
                        : Strings.NewGuid();
                    filePath = SaveFileToTemp(
                        guid: targetGuid,
                        file: postedFile);
                    context.ApiRequestBody = CreateAttachmentsHashJson(
                        context: context,
                        guidParam: $"{guid},{targetGuid}",
                        referenceId: referenceId,
                        file: postedFile);
                    var response = new ItemModel(
                        context: context,
                        referenceId: referenceId)
                                   .UpdateByApi(context: context);
                    log.Finish(
                        context: context,
                        responseSize: response?.Content?.Length ?? 0);
                    return(response);
                }
                else
                {
                    if (context.QueryStrings.Long("id") == 0 ||
                        !Mime.ValidateOnApi(contentType: context.ContentType))
                    {
                        return(ApiResults.BadRequest(context: context));
                    }
                    var targetGuid = Strings.NewGuid();
                    filePath = SaveFileToTemp(
                        guid: targetGuid,
                        file: postedFile);
                    var attachment = Attachment(
                        guidParam: targetGuid,
                        referenceId: context.QueryStrings.Long("id"),
                        file: postedFile);
                    var response = attachment.Create(context: context);
                    log.Finish(
                        context: context,
                        responseSize: response?.Content?.Length ?? 0);
                    return(response);
                }
            }
            finally
            {
                Files.DeleteFile(filePath);
            }
        }