Esempio n. 1
0
        public ActionResult Uebersicht(long kontonummer, string passwort)
        {
            Kunde         kunde;
            List <Umsatz> umsaetze = new List <Umsatz>();
            Dictionary <Kunde, List <Umsatz> > data = new Dictionary <Kunde, List <Umsatz> >();

            using (SHA384 sha = SHA384Managed.Create())
                using (DeltaContext db = new DeltaContext())
                {
                    byte[] b = sha.ComputeHash(Encoding.UTF8.GetBytes(passwort));
                    string p = BitConverter.ToString(b).Replace("-", string.Empty).ToLower();

                    kunde       = db.Kunden.FirstOrDefault <Kunde>(k => k.Konto.Kontonummer == kontonummer && (k.PIN == p || k.Passwort == p)) ?? new Kunde();
                    kunde.Konto = db.Konten.FirstOrDefault <Konto>(k => k.Kontonummer == kontonummer && k.Kunde.KundeId == kunde.KundeId);

                    umsaetze.AddRange((from u in db.Umsaetze
                                       where u.Kunde.KundeId == kunde.KundeId
                                       orderby u.Wertstellung descending
                                       select u) ?? new List <Umsatz>().AsQueryable <Umsatz>());

                    data.Add(kunde, umsaetze);
                }

            return(View(data));
        }
Esempio n. 2
0
        protected override RequestHandler DispatchHandler()
        {
            // TODO: Remove the following if to use Delta framework
            if (RequestUri.Segments.Length > 0)
            {
                int    length  = RequestUri.Segments.Length;
                string segment = RequestUri.Segments[length - 1];
                string decoded = HttpUtility.UrlDecode(segment);
                if (decoded == "$delta")
                {
                    return(new DeltaLinkHandler(this));
                }
                else if (decoded == ServiceConstants.ServicePath_Async)
                {
                    return(new StatusMonitorRequestHandler(this));
                }
            }

            if (this.QueryContext.DeltaToken != null)
            {
                DeltaSnapshot deltaSnapshot = DeltaContext.GetDeltaQueryByDeltaToken(this.QueryContext.DeltaToken);
                return(new DeltaHandler(this, deltaSnapshot, this.QueryContext.DeltaToken));
            }
            if (this.QueryContext.QueryPath.FirstSegment == null)
            {
                // ServiceDocument request
                return(new ServiceDocumentHandler(this));
            }
            if (this.QueryContext.QueryPath.FirstSegment is MetadataSegment)
            {
                // $metadata request
                return(new MetadataDocumentHandler(this));
            }
            if (this.QueryContext.QueryPath.LastSegment is OperationSegment || this.QueryContext.QueryPath.LastSegment is OperationImportSegment)
            {
                return(new OperationHandler(this, HttpMethod.GET));
            }
            if (this.QueryContext.QueryPath.LastSegment is ValueSegment && this.QueryContext.Target.TypeKind == EdmTypeKind.Primitive)
            {
                var primitive = this.QueryContext.Target.Type as IEdmPrimitiveType;
                if (primitive != null && primitive.PrimitiveKind == EdmPrimitiveTypeKind.Stream)
                {
                    return(new MediaStreamHandler(this, this.HttpMethod));
                }
            }

            return(null);
        }
Esempio n. 3
0
        public override void Process(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage)
        {
            // TODO: we will need to add server-driven paging for delta link

            object queryResults = this.QueryContext.ResolveQuery(this.DataSource);

            using (var messageWriter = this.CreateMessageWriter(responseMessage))
            {
                IEdmNavigationSource navigationSource   = this.QueryContext.Target.NavigationSource;
                IEnumerable          iEnumerableResults = queryResults as IEnumerable;

                if (this.QueryContext.Target.NavigationSource != null && this.QueryContext.Target.TypeKind == EdmTypeKind.Collection)
                {
                    IEdmEntitySetBase entitySet  = navigationSource as IEdmEntitySetBase;
                    IEdmEntityType    entityType = this.QueryContext.Target.ElementType as IEdmEntityType;
                    if (entitySet == null || entityType == null)
                    {
                        throw new InvalidOperationException("Invalid target when query feed.");
                    }
                    GenerateDeltaItemsFromFeed(iEnumerableResults, entitySet, ODataVersion.V4, this.QueryContext.QuerySelectExpandClause);

                    Uri newDeltaLink = null;
                    if (this.PreferenceContext.TrackingChanges)
                    {
                        var newDeltaToken = DeltaContext.GenerateDeltaToken(this.QueryContext.QueryUri, iEnumerableResults, entitySet, this.QueryContext.QuerySelectExpandClause);
                        newDeltaLink = new Uri(string.Format("{0}?{1}={2}", this.ServiceRootUri, ServiceConstants.QueryOption_Delta, newDeltaToken));
                        responseMessage.AddPreferenceApplied(ServiceConstants.Preference_TrackChanging);
                    }
                    ODataDeltaWriter resultWriter = messageWriter.CreateODataDeltaWriter(entitySet, entityType);
                    ResponseWriter.WriteDeltaFeed(resultWriter, this.DeltaItems, this.QueryContext.CountOption, newDeltaLink);

                    resultWriter.Flush();
                }
                else
                {
                    throw Utility.BuildException(HttpStatusCode.Gone);
                }
            }
        }
 private void Adjust(IAdjustableItem item, double error, double input, DeltaContext context)
 {
     var pars = GetCurrentParameters(item);
     double delta = pars.StepSize * error * input;
     if (pars.Momentum != 0.0)
     {
         if (context.Delta == null)
         {
             context.Delta = delta;
         }
         else
         {
             context.Delta = delta = (pars.Momentum * context.Delta.Value) + ((1.0 - pars.Momentum) * delta);
         }
     }
     item.Adjustment += delta;
 }