Beispiel #1
0
        public async Task <DocumentFolderView> GetFolderFromCollection(Guid folderId)
        {
            var folderQuery      = _ctx.documentfolderview.Where(k => k.DocumentFolderId == folderId);
            var folderCollection = await ODataBasics.GetDSCollection(folderQuery);

            return(folderCollection.FirstOrDefault());
        }
Beispiel #2
0
        public async Task <DocumentView> GetDocumentFromCollection(Guid documentId)
        {
            var documentQuery      = _ctx.documentview.Where(k => k.DocumentId == documentId);
            var documentCollection = await ODataBasics.GetDSCollection(documentQuery);

            return(documentCollection.FirstOrDefault());
        }
        public async Task <bool> Connect(Uri endPoint, string username, string password)
        {
            var tokenResponse = ODataBasics.GetToken(endPoint, username, password)
                                .Result;

            var token = tokenResponse?.AccessToken;

            if (token == null)
            {
                // credentials invalid
                IsConnected = false;
                return(IsConnected);
            }

            return(await Connect(endPoint, token));
        }
Beispiel #4
0
        public async Task <DocumentRelationExtend> CreateNewDocumentRelation(BudgetPositionExtend actualExpenseBudgetPosition, DocumentView document)
        {
            // create new query
            var query    = ODataBasics.GetDSCollection <DocumentRelationExtend>(_context);
            var relation = new DocumentRelationExtend();

            query.Add(relation);

            // set values
            relation.DocumentId = document.DocumentId;
            relation.ProjectId  = document.ProjectId;
            relation.ObjectId   = actualExpenseBudgetPosition.BudgetPositionId;

            // save
            await _context.SaveChangesAsync(SaveChangesOptions.PostOnlySetProperties);

            return(relation);
        }
Beispiel #5
0
        public async Task <DocumentView> CreateNewInvoiceDocumentLink(Uri path, Guid projectId)
        {
            // create new query
            var query    = ODataBasics.GetDSCollection <DocumentView>(_context);
            var document = new DocumentView();

            query.Add(document);

            // set values
            document.FileName       = path.ToString();
            document.IsFileLink     = false;
            document.IsInternetLink = true;
            document.ProjectId      = projectId;

            // save
            await _context.SaveChangesAsync(SaveChangesOptions.PostOnlySetProperties);

            return(document);
        }
Beispiel #6
0
        public Task <DataServiceCollection <DocumentSync> > GetChangesSince(DateTimeOffset sinceDate,
                                                                            DocumentSyncChangeType changeType = DocumentSyncChangeType.All)
        {
            var query = _ctx.documentsync
                        .OrderByDescending(k => k.UpdatedAt)
                        .Where(k => k.UpdatedAt > sinceDate);

            switch (changeType)
            {
            case DocumentSyncChangeType.File:
                query = query.Where(k => !k.IsFolder);
                break;

            case DocumentSyncChangeType.Folders:
                query = query.Where(k => k.IsFolder);
                break;
            }

            return(ODataBasics.GetDSCollection(query));
        }
        public async Task <bool> Connect(Uri endPoint, string token)
        {
            var endPointOdata = new Uri(endPoint, ODATA_ROUTE);

            try
            {
                // set context
                _context = ODataBasics.GetInLooxContext(endPointOdata, token);

                // get current user, also test for connection
                CurrentUser = await GetCurrentContact();
            }
            catch
            {
                // token invalid
                IsConnected = false;
                return(IsConnected);
            }

            IsConnected = true;
            return(IsConnected);
        }
Beispiel #8
0
        private async Task <BudgetExtend> CreateActualExpense(BudgetExtend plannedExpense)
        {
            if (plannedExpense == null)
            {
                return(null);
            }

            // create new query
            var query  = ODataBasics.GetDSCollection <BudgetExtend>(_context);
            var budget = new BudgetExtend();

            query.Add(budget);

            // set values
            budget.Name       = plannedExpense.Name;
            budget.BudgetType = ConstantsHelper.BUDGET_TYPE_ACTUAL_EXPENSE;
            budget.ProjectId  = plannedExpense.ProjectId;

            // save
            await _context.SaveChangesAsync(SaveChangesOptions.PostOnlySetProperties);

            return(budget);
        }
Beispiel #9
0
        private async Task <BudgetPositionExtend> CreateNewBudgetPosition(BudgetExtend actualExpenseBudget,
                                                                          BudgetPositionExtend plannedExpenseBudgetPosition, double amount, string invoiceNumber)
        {
            // create new query
            var query = ODataBasics.GetDSCollection <BudgetPositionExtend>(_context);
            var actualExpenseBudgetPosition = new BudgetPositionExtend();

            query.Add(actualExpenseBudgetPosition);

            // set values
            actualExpenseBudgetPosition.BudgetId         = actualExpenseBudget.BudgetId;
            actualExpenseBudgetPosition.ShortDescription = plannedExpenseBudgetPosition.ShortDescription;
            actualExpenseBudgetPosition.GroupId          = plannedExpenseBudgetPosition.GroupId;
            actualExpenseBudgetPosition.PricePerUnit     = amount;
            actualExpenseBudgetPosition.Quantity         = 1;
            actualExpenseBudgetPosition.Unit             = string.Format(SEE_INVOICE_HINT, invoiceNumber);
            actualExpenseBudgetPosition.IsBilled         = true;

            // save
            await _context.SaveChangesAsync(SaveChangesOptions.PostOnlySetProperties);

            return(actualExpenseBudgetPosition);
        }
        public async Task AddOrUpdateByName(IDictionary <string, string> dict)
        {
            if (!dict.ContainsKey("Name"))
            {
                throw new ArgumentException(nameof(dict) + " should contain 'Name'");
            }

            var name           = dict["Name"];
            var ctx            = _client.GetContext();
            var query          = GetEntityQuery(ctx, name);
            var dataCollection = await ODataBasics.GetDSCollection(query);

            var entity = dataCollection.FirstOrDefault();

            if (entity == null)
            {
                entity = new T();
                dataCollection.Add(entity);
            }

            await Update(ctx, entity, dict);

            await ctx.SaveChangesAsync(SaveChangesOptions.PostOnlySetProperties);
        }
 public Container GetContext()
 {
     return(ODataBasics.GetInLooxContext(EndPointOdata, AccessToken));
 }
Beispiel #12
0
 public static Task <DataServiceCollection <T> > ToDataServiceCollection <T>(this IQueryable <T> query)
 {
     return(ODataBasics.GetDSCollection(query));
 }
Beispiel #13
0
        static void Main(string[] args)
        {
            var endPoint      = new Uri("https://app.inlooxnow.com/");
            var endPointOdata = new Uri(endPoint, "odata/");

            var username = "******";
            var password = "";

            var tokenResponse = ODataBasics.GetToken(endPoint, username, password).Result;

            // in case multiple accounts exists
            if (tokenResponse.Error != null)
            {
                var accounts = tokenResponse.GetAccounts();

                // filter correct account by name
                var myAccount = accounts.FirstOrDefault(k => k.Name.StartsWith("000000"));
                tokenResponse = ODataBasics.GetToken(endPoint, username, password, myAccount.Id).Result;
            }

            if (tokenResponse == null)
            {
                Console.WriteLine("Login invalid");
                return;
            }

            var context = ODataBasics.GetInLooxContext(endPointOdata, tokenResponse.AccessToken);
            // lookup custom field "DocTest" id
            var ceDefaults  = context.customexpanddefaultextend.ToList();
            var cedDocument = ceDefaults.FirstOrDefault(k => k.DisplayName == "DocTest");

            if (cedDocument == null)
            {
                Console.WriteLine("Custom field 'DocTest' not found");
                return;
            }

            // build query for all documents with custom field 'DocTest' set to true.
            var query = context.documentview
                        .Where(k => k.CustomExpand.Any(ce => ce.CustomExpandDefaultId == cedDocument.CustomExpandDefaultId && ce.BoolValue == true))
                        .OrderBy(k => k.FileName)
                        .Skip(0)
                        .Take(10);

            // need to use DataServiceCollection to use the PostOnlySetProperties feature
            // if you only need to read from the query a ToList() is ok.
            var docs = new DataServiceCollection <DocumentView>(query);

            Console.WriteLine(docs.Count());

            foreach (var d in docs)
            {
                Console.WriteLine(d.FileName);
            }

            // change document state
            if (docs.Count > 0)
            {
                var doc = docs.FirstOrDefault();
                doc.State = "Updated " + DateTime.Now;

                // only update the modfied properties
                context.SaveChangesDefaultOptions = SaveChangesOptions.PostOnlySetProperties;

                context.UpdateObject(doc);
                context.SaveChanges();
            }
        }