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()); }
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)); }
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); }
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); }
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); }
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); }
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)); }
public static Task <DataServiceCollection <T> > ToDataServiceCollection <T>(this IQueryable <T> query) { return(ODataBasics.GetDSCollection(query)); }
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(); } }