コード例 #1
0
ファイル: SombraContext.cs プロジェクト: JelleKerkstra/Sombra
 public async Task <TResponse> TrySaveChangesAsync <TResponse>()
     where TResponse : CrudResponse <TResponse>, new()
 {
     return((await TrySaveChangesAsync())
         ? CrudResponse <TResponse> .Success()
         : CrudResponse <TResponse> .Error(ErrorType.DatabaseError));
 }
コード例 #2
0
 public async Task <TResponse> TrySaveChangesAsync <TResponse>()
     where TResponse : CrudResponse <TResponse>, new()
 {
     return((await TrySaveChangesAsync())
         ? CrudResponse <TResponse> .Success()
         : new TResponse());
 }
コード例 #3
0
        public async Task <CrudResponse <T> > UpdateAsync(T entity)
        {
            try
            {
                _context.Entry(entity).State = EntityState.Modified;
                _context.Set <T>().Update(entity);
                await _context.SaveChangesAsync();

                var response = new CrudResponse <T>()
                {
                    Success = true,
                    Message = $"Entity successfully updated.",
                    Entity  = entity
                };
                return(response);
            }
            catch (Exception ex)
            {
                var response = new CrudResponse <T>()
                {
                    Success = false, Message = ex.Message
                };
                return(response);
            }
        }
コード例 #4
0
        public async Task <CrudResponse <T> > AddAsync(T entity)
        {
            try
            {
                await _context.Set <T>().AddAsync(entity);

                await _context.SaveChangesAsync();

                var response = new CrudResponse <T>()
                {
                    Success = true, Message = $"Entity was successfully added.",
                    Entity  = entity
                };
                return(response);
            }
            catch (Exception ex)
            {
                var response = new CrudResponse <T>()
                {
                    Success = false,
                    Message = ex.Message
                };
                return(response);
            }
        }
コード例 #5
0
        public ActionResult Details(int?Id = null)
        {
            CrudModel model = null;

            if (!Id.HasValue || Id.Value == 0)
            {
                return(RedirectToAction("Index"));
            }

            CrudRequest request = new CrudRequest(Id.Value);

            StringContent       content      = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
            HttpResponseMessage httpResponse = _client.PostAsync("api/Crud/GetRecord", content).Result;
            string data = httpResponse.Content.ReadAsStringAsync().Result;

            CrudResponse response = JsonConvert.DeserializeObject <CrudResponse>(data);

            if (response.Success)
            {
                model = new CrudModel(response.Crud);
                return(View(model));
            }

            return(RedirectToAction("Index"));
        }
コード例 #6
0
        public void handleValidationErrors(CrudResponse response, List <Exception> validationErrors)
        {
            //TODO add handle validation errors

            //foreach (FieldException fieldError in validationErrors.Where(p=>p.)
            //{
            //    Message message = new Message(fieldError);
            //    response.Messages.Add(message);
            //}
        }
コード例 #7
0
        public async Task <TResponse> TrySaveChangesAsync <TResponse>(Action <TResponse> responseModifierOnSuccess)
            where TResponse : CrudResponse <TResponse>, new()
        {
            if (await TrySaveChangesAsync())
            {
                var response = CrudResponse <TResponse> .Success();

                responseModifierOnSuccess(response);
                return(response);
            }
            return(new TResponse());
        }
コード例 #8
0
        protected CrudResponse ConvertServiceResponseToCrudResponse(int id)
        {
            CrudResponse res = new CrudResponse();

            if (id > 0)
            {
                res.ID      = id;
                res.Success = true;
            }
            else
            {
                res.Success = false;
            }
            return(res);
        }
コード例 #9
0
        public CrudResponse handleHttpFourAndFiveHundredErrors(CrudResponse response, HttpException error, int id)
        {
            response.ChangedEntityId = id;

            Message message = new Message();

            message.DetailMessage = error.GetHtmlErrorMessage();
            message.Severity      = error.ErrorCode.ToString();
            message.Type          = error.GetType().ToString();

            response.Messages.Add(message);

            response.ErrorCode    = error.GetHttpCode().ToString();
            response.ErrorMessage = error.Message;
            return(response);
        }
コード例 #10
0
        private bool TryExecuteCrudRequest(string[] chunks, IHttpContext context, bool handled, string appName)
        {
            IRequest  request  = context.Request;
            IResponse response = context.Response;
            string    connectionName;
            string    methodName;
            string    daoName;

            GetDaoInfo(chunks, out connectionName, out methodName, out daoName);
            DaoProxyRegistration daoProxyReg = null;

            connectionName = connectionName.ToLowerInvariant();
            if (CommonDaoProxyRegistrations.ContainsKey(connectionName))
            {
                daoProxyReg = CommonDaoProxyRegistrations[connectionName];
            }
            else if (AppDaoProxyRegistrations.ContainsKey(appName))
            {
                daoProxyReg = AppDaoProxyRegistrations[appName].Where(dpr => dpr.ContextName.Equals(connectionName)).FirstOrDefault();
            }

            if (daoProxyReg != null)
            {
                Type daoType = daoProxyReg.ServiceProvider[daoName];
                if (daoType != null)
                {
                    if (daoProxyReg.Database == null)
                    {
                        RegisterDatabase(daoProxyReg);
                    }

                    DaoCrudResponseProvider responseProvider = new DaoCrudResponseProvider(daoProxyReg, context);
                    CrudResponse            crudResponse     = responseProvider.Execute();
                    if (crudResponse.Success)
                    {
                        handled = true;
                        SendResponse(response, crudResponse.ToJson());
                    }
                }
            }
            return(handled);
        }
コード例 #11
0
        private CrudResponse handleDeleteEntity(string entityType, int id)
        {
            string url = restUrlFactory.assembleEntityDeleteUrl(entityType, id, restApiSession.GetBhRestToken());

            CrudResponse response = null;

            try
            {
                HttpRequestMessage _httpRequest = new HttpRequestMessage();
                _httpRequest.RequestUri = new Uri(url);
                _httpRequest.Method     = HttpMethod.Delete;

                response = JsonConvert.DeserializeObject <DeleteResponse>(httpClient.SendAsync(_httpRequest).Result.Content.ReadAsStringAsync().Result);
            }
            catch (HttpException error)
            {
                response = restErrorHandler.handleHttpFourAndFiveHundredErrors(new DeleteResponse(), error, id);
            }
            return(response);
        }
コード例 #12
0
        public ActionResult Index()
        {
            try
            {
                StringContent       content      = new StringContent(JsonConvert.SerializeObject(new CrudRequest()), Encoding.UTF8, "application/json");
                HttpResponseMessage httpResponse = _client.PostAsync("api/Crud/GetRecords", content).Result;
                string data = httpResponse.Content.ReadAsStringAsync().Result;

                CrudResponse response = JsonConvert.DeserializeObject <CrudResponse>(data);
                CrudModel    model    = new CrudModel(response.Cruds);

                return(View(model));
            }
            catch (CrudException ex)
            {
            }
            catch (Exception ex)
            {
            }

            return(View());
        }
コード例 #13
0
 public CrudResponse <T> Delete(T entity)
 {
     try
     {
         _context.Set <T>().Remove(entity);
         _context.SaveChanges();
         var response = new CrudResponse <T>()
         {
             Success = true,
             Message = $"Entity successfully deleted.",
             Entity  = entity
         };
         return(response);
     }
     catch (Exception ex)
     {
         var response = new CrudResponse <T>()
         {
             Success = false, Message = ex.Message
         };
         return(response);
     }
 }
コード例 #14
0
        public CrudResponse GetRecord(CrudRequest request)
        {
            CrudRequest  dbCrud   = null;
            CrudResponse response = null;

            try
            {
                if (_crud.GetRecord(out dbCrud, request))
                {
                    response = new CrudResponse(true, "Registro recuperado com sucesso!", dbCrud);
                }
            }
            catch (CrudException ex)
            {
                response = new CrudResponse(false, ex.Message);
            }
            catch (Exception ex)
            {
                response = new CrudResponse(false, "Não foi possível recuperar o registro. Erro: " + ex.Message);
            }

            return(response);
        }
コード例 #15
0
        public CrudResponse GetRecords(CrudRequest request)
        {
            List <CrudRequest> lstCruds = null;
            CrudResponse       response = null;

            try
            {
                if (_crud.GetRecords(out lstCruds, request))
                {
                    response = new CrudResponse(true, "Registros recuperados com sucesso!", lstCruds);
                }
            }
            catch (CrudException ex)
            {
                response = new CrudResponse(false, ex.Message);
            }
            catch (Exception ex)
            {
                response = new CrudResponse(false, "Não foi possível recuperar os registros. Erro: " + ex.Message);
            }

            return(response);
        }
コード例 #16
0
 public TResponse Error(ErrorType errorType) => CrudResponse <TResponse> .Error(errorType);
コード例 #17
0
 public TResponse Success() => CrudResponse <TResponse> .Success();