public async Task <ActionResult> SaveAsync(List <ExchangeRateViewModel> exchangeRates) { if (!ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } if (exchangeRates == null || exchangeRates.Count().Equals(0)) { return(this.InvalidModelState(this.ModelState)); } var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); int officeId = meta.OfficeId; string baseCurrency = meta.CurrencyCode; long id = await ExchangeRates.SaveAsync(this.Tenant, officeId, baseCurrency, exchangeRates).ConfigureAwait(false); return(this.Ok(id)); }
protected override void Initialize(RequestContext context) { string tenant = TenantConvention.GetTenant(); string clientToken = context.HttpContext.Request.GetClientToken(); var provider = new Provider(); var token = provider.GetToken(clientToken); if (token != null) { bool isValid = AccessTokens.IsValidAsync(tenant, token.ClientToken, context.HttpContext.GetClientIpAddress(), context.HttpContext.GetUserAgent()).GetAwaiter().GetResult(); if (isValid) { AppUsers.SetCurrentLoginAsync(tenant, token.LoginId).GetAwaiter().GetResult(); var loginView = AppUsers.GetCurrentAsync(tenant, token.LoginId).GetAwaiter().GetResult(); this.AppUser = new AppUser { Tenant = tenant, ClientToken = token.ClientToken, LoginId = loginView.LoginId, UserId = loginView.UserId, Name = loginView.Name, OfficeId = loginView.OfficeId, OfficeName = loginView.OfficeName, Email = loginView.Email, RoleId = loginView.RoleId, RoleName = loginView.RoleName, IsAdministrator = loginView.IsAdministrator }; var identity = new ClaimsIdentity(token.GetClaims(), DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.NameIdentifier, ClaimTypes.Role); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, token.LoginId.ToString(CultureInfo.InvariantCulture))); if (loginView.RoleName != null) { identity.AddClaim(new Claim(ClaimTypes.Role, loginView.RoleName)); } if (loginView.Email != null) { identity.AddClaim(new Claim(ClaimTypes.Email, loginView.Email)); } context.HttpContext.User = new ClaimsPrincipal(identity); } } if (this.AppUser == null) { this.AppUser = new AppUser { Tenant = tenant }; } base.Initialize(context); }
public async Task <ActionResult> PostAsync(OpeningCash model) { if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } var meta = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(false); var dates = await Dates.GetFrequencyDatesAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); model.UserId = meta.UserId; model.TransactionDate = dates.Today; try { await OpeningCashTransactions.AddAsync(this.Tenant, model).ConfigureAwait(true); return(this.Ok()); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
public override void OnActionExecuting(ActionExecutingContext filterContext) { string path = this.OverridePath.Or(filterContext.HttpContext.Request.FilePath); var my = AppUsers.GetCurrentAsync().Result; int userId = my.UserId; int officeId = my.OfficeId; string culture = my.Culture; string tenant = TenantConvention.GetTenant(); var policy = Menu.GetAsync(tenant, userId, officeId, culture).Result; if (!policy.Any(x => x.Url.Equals(path))) { if (this.StatusResponse) { filterContext.Result = new HttpUnauthorizedResult("Access is denied."); } else { filterContext.Result = new RedirectResult("/account/sign-in"); } } }
public async Task <ActionResult> ChangePasswordAsync(ChangePasswordInfo model) { var meta = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(true); if (!meta.IsAdministrator) { return(this.AccessDenied()); } if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } if (model.Password != model.ConfirmPassword) { return(this.Failed(I18N.ConfirmPasswordDoesNotMatch, HttpStatusCode.BadRequest)); } model.Email = meta.Email; try { await Users.ChangePasswordAsync(this.Tenant, meta.UserId, model).ConfigureAwait(true); return(this.Ok("OK")); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
public async Task <ActionResult> IndexAsync() { var meta = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(true); var dates = await Dates.GetFrequencyDatesAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); var openingCash = await OpeningCashTransactions.GetAsync(this.Tenant, meta.UserId, dates.Today).ConfigureAwait(true); var closingCash = await ClosingCashTransactions.GetAsync(this.Tenant, meta.UserId, dates.Today).ConfigureAwait(true); var salesView = await ClosingCashTransactions.GetCashSalesViewAsync(this.Tenant, meta.UserId, dates.Today).ConfigureAwait(true); var model = new ClosingCashViewModel { OpeningCashInfo = openingCash ?? new OpeningCash { TransactionDate = dates.Today }, SalesView = salesView ?? new List <SalesView>(), ClosingCashInfo = closingCash ?? new ClosingCash { TransactionDate = dates.Today } }; return(this.FrapidView(this.GetRazorView <AreaRegistration>("Tasks/ClosingCash/Index.cshtml", this.Tenant), model)); }
public async Task <ActionResult> Put(DTO.InventorySetup model) { if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } var meta = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(true); if (!meta.IsAdministrator) { return(this.AccessDenied()); } try { await InventorySetup.SetAsync(this.Tenant, meta.OfficeId, model).ConfigureAwait(false); return(this.Ok()); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
public async Task <ActionResult> AddAsync(UserInfo model) { var user = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(true); if (!user.IsAdministrator) { return(this.AccessDenied()); } if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } if (model.Password != model.ConfirmPassword) { return(this.Failed("Confirm password does not match with the supplied password", HttpStatusCode.BadRequest)); } try { await DAL.Users.CreateUserAsync(this.Tenant, user.UserId, model).ConfigureAwait(true); return(this.Ok("OK")); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
public async Task <ActionResult> PostAsync(Order model) { if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); model.UserId = meta.UserId; model.OfficeId = meta.OfficeId; model.AuditUserId = meta.UserId; model.AuditTs = DateTimeOffset.UtcNow; model.TransactionTimestamp = DateTimeOffset.UtcNow; try { long tranId = await Orders.PostAsync(this.Tenant, model).ConfigureAwait(true); return(this.Ok(tranId)); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
public async Task <ActionResult> PostAsync(Content content) { if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(false); content.AuditUserId = meta.UserId; content.AuditTs = DateTimeOffset.UtcNow; if (content.ContentId == 0) { content.AuthorId = meta.UserId; } try { int id = await Contents.AddOrEditAsync(this.Tenant, content).ConfigureAwait(false); return(this.Ok(id)); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
protected async Task <ActionResult> OnAuthenticatedAsync(LoginResult result, SignInInfo model = null) { if (!result.Status) { int delay = new Random().Next(1, 5) * 1000; await Task.Delay(delay).ConfigureAwait(false); return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, JsonConvert.SerializeObject(result))); } Guid?applicationId = null; if (model != null) { applicationId = model.ApplicationId; } var loginView = await AppUsers.GetCurrentAsync(this.Tenant, result.LoginId).ConfigureAwait(false); var manager = new Provider(this.Tenant, applicationId, result.LoginId, loginView.UserId, loginView.OfficeId); var token = manager.GetToken(); await AccessTokens.SaveAsync(this.Tenant, token, this.RemoteUser.IpAddress, this.RemoteUser.UserAgent).ConfigureAwait(true); string domain = TenantConvention.GetDomain(); this.AddAuthenticationCookie(domain, token); this.AddCultureCookie(domain, model?.Culture.Or("en-US")); return(this.Ok(token.ClientToken)); }
public static async Task <AppUser> GetUserAsync(string tenant, HubCallerContext context) { var token = await GetTokenAsync(tenant, context).ConfigureAwait(false); if (token != null) { await AppUsers.SetCurrentLoginAsync(tenant, token.LoginId).ConfigureAwait(false); var loginView = await AppUsers.GetCurrentAsync(tenant, token.LoginId).ConfigureAwait(false); return(new AppUser { Tenant = tenant, ClientToken = token.ClientToken, LoginId = token.LoginId, UserId = loginView.UserId, OfficeId = loginView.OfficeId, Email = loginView.Email, IsAdministrator = loginView.IsAdministrator, RoleId = loginView.RoleId, Name = loginView.Name, RoleName = loginView.RoleName, OfficeName = loginView.OfficeName }); } return(null); }
public async Task <ActionResult> PostAsync(SalesReceipt model) { if (!this.ModelState.IsValid) { return(this.InvalidModelState(this.ModelState)); } if (model.CashRepositoryId == 0 && model.BankAccountId == 0) { this.Failed(I18N.InvalidReceiptMode, HttpStatusCode.InternalServerError); } if (model.CashRepositoryId > 0 && (model.BankAccountId > 0 || !string.IsNullOrWhiteSpace(model.BankInstrumentCode) || !string.IsNullOrWhiteSpace(model.BankInstrumentCode))) { this.Failed(I18N.CashTransactionCannotContainBankTransactionDetails, HttpStatusCode.InternalServerError); } var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); model.UserId = meta.UserId; model.OfficeId = meta.OfficeId; model.LoginId = meta.LoginId; try { long tranId = await Receipts.PostAsync(this.Tenant, model).ConfigureAwait(true); return(this.Ok(tranId)); } catch (Exception ex) { return(this.Failed(ex.Message, HttpStatusCode.InternalServerError)); } }
public async Task <ActionResult> Index() { var meta = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(true); var model = await InventorySetup.GetAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); return(this.FrapidView(this.GetRazorView <AreaRegistration>("Setup/IS.cshtml", this.Tenant), model)); }
public async Task <ActionResult> GetNextTopFeedsAsync(long lastFeedId = 0, long parentFeedId = 0) { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await Feeds.GetFeedsAsync(this.Tenant, meta.UserId, lastFeedId, parentFeedId).ConfigureAwait(true); return(this.Ok(model)); }
public async Task <ActionResult> IndexAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await Employees.GetEmployeesAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); return(this.FrapidView(this.GetRazorView <AreaRegistration>("Tasks/Attendance/Index.cshtml", this.Tenant), model)); }
public async Task <ActionResult> GetTodaysTotalSalesAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); decimal sales = await DAL.Backend.Summary.Sales.GetTodaysTotalSalesAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); return(this.Ok(sales)); }
public async Task <ActionResult> IndexAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await Categories.GetMyCategoriesAsync(this.Tenant, meta.UserId).ConfigureAwait(true); return(this.FrapidView(this.GetRazorView <AreaRegistration>("Backend/Index.cshtml", this.Tenant), model)); }
public async Task <ActionResult> GetMyNotificationAsync(Guid notificationId) { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); await Notifications.MarkAsSeenAsync(this.Tenant, notificationId, meta.UserId).ConfigureAwait(true); return(this.Ok()); }
public async Task <ActionResult> GetMyNotificationAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await Notifications.GetMyNotificationsAsync(this.Tenant, meta.LoginId).ConfigureAwait(true); return(this.Ok(model)); }
public async Task <ActionResult> PostAsync(Feed model) { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var feedResult = await Feeds.PostAsync(this.Tenant, model, meta).ConfigureAwait(true); return(this.Ok(feedResult)); }
public async Task <ActionResult> NewAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await OpeningInventories.GetModelAsync(this.Tenant, meta).ConfigureAwait(true); return(this.FrapidView(this.GetRazorView <AreaRegistration>("Setup/OpeningInventory/New.cshtml", this.Tenant), model)); }
public async Task <ActionResult> GetBalanceAsync(string giftCardNumber) { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); decimal result = await GiftCardFunds.GetBalanceAsync(this.Tenant, giftCardNumber, meta.OfficeId).ConfigureAwait(true); return(this.Ok(result)); }
public async Task <ActionResult> IndexAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await Items.GetItemsAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); return(this.Ok(model)); }
public async Task <ActionResult> GetNextTopFeedsAsync(FeedQuery query) { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await Feeds.GetFeedsAsync(this.Tenant, meta.UserId, query).ConfigureAwait(true); return(this.Ok(model)); }
public async Task <ActionResult> IndexAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); var model = await FiscalYears.GetFrequencyDatesAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); return(this.FrapidView(this.GetRazorView <AreaRegistration>("Tasks/EOD/Index.cshtml", this.Tenant), model)); }
public async Task <ActionResult> GetHomeCurrencyAsync() { var meta = await AppUsers.GetCurrentAsync().ConfigureAwait(true); string homeCurrency = await Receipts.GetHomeCurrencyAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); return(this.Ok(homeCurrency)); }
public async Task <ActionResult> GetCurrenciesAsync() { var currencies = await Currencies.GetCurrenciesAsync(this.Tenant).ConfigureAwait(true); string currencyCode = (await AppUsers.GetCurrentAsync().ConfigureAwait(true)).CurrencyCode; var model = currencies.Where(x => x.CurrencyCode != currencyCode).ToList(); return(this.Ok(model)); }
public async Task <ActionResult> IndexAsync() { var meta = await AppUsers.GetCurrentAsync(this.Tenant).ConfigureAwait(true); var dates = await Dates.GetFrequencyDatesAsync(this.Tenant, meta.OfficeId).ConfigureAwait(true); var model = await OpeningCashTransactions.GetAsync(this.Tenant, meta.UserId, dates.Today).ConfigureAwait(true) ?? new OpeningCash(); return(this.FrapidView(this.GetRazorView <AreaRegistration>("Tasks/OpeningCash/Index.cshtml", this.Tenant), model)); }
public async Task <ActionResult> GetAsync(JournalViewQuery query) { var appUser = await AppUsers.GetCurrentAsync().ConfigureAwait(true); query.OfficeId = appUser.OfficeId; query.UserId = appUser.UserId; var model = await Journals.GetJournalViewAsync(this.Tenant, query).ConfigureAwait(true); return(this.Ok(model)); }