public IActionResult Post([FromBody] GoodsReceiptModel value)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(BadRequest(ModelState));
         }
         RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
         value.CreatedBy = currentUser.EmployeeId;
         value.IsCancel  = false;
         if (value != null)
         {
             //Nagesh: we are creating gr without po directly , if we need functionality like first create po and then gr
             //po from background
             //var poResponse = _inventoryGoodReceiptService.AddPOAndPOItemsByGRId(value);
             //value.PurchaseOrderId = poResponse.PurchaseOrderId;
             var grResponse = _inventoryGoodReceiptService.AddGoodsReceipt(value);
             //add po with po items when we directly create goods receipt
             responseData.Results = grResponse.GoodsReceiptID;
             responseData.Status  = "OK";
         }
     }
     catch (Exception ex)
     {
         responseData.Status       = "Failed";
         responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
     }
     return(Ok(responseData));
 }
        public string Put(string reqType, int settlementId)
        {
            RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();

            responseData.Status = "OK";//by default status would be OK, hence assigning at the top
            try
            {
                if (reqType == "updateSettlementPrintCount")
                {
                    BillingDbContext bilDbContext = new BillingDbContext(connString);
                    int settlmntId    = settlementId;
                    var currSettlment = bilDbContext.BillSettlements.Where(s => s.SettlementId == settlmntId).FirstOrDefault();
                    if (currSettlment != null)
                    {
                        int?printCount = currSettlment.PrintCount.HasValue ? currSettlment.PrintCount : 0;
                        printCount += 1;
                        bilDbContext.BillSettlements.Attach(currSettlment);
                        currSettlment.PrintCount = printCount;
                        currSettlment.PrintedOn  = System.DateTime.Now; //Yubraj: 13th August'19
                        currSettlment.PrintedBy  = currentUser.EmployeeId;
                        bilDbContext.Entry(currSettlment).Property(b => b.PrintCount).IsModified = true;
                        bilDbContext.SaveChanges();

                        responseData.Results = new { SettlementId = settlementId, PrintCount = printCount };
                    }
                }
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        public string Put()
        {
            RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();

            responseData.Status = "OK";
            try
            {
                BillingDbContext billingDbContext = new BillingDbContext(connString);
                string           reqType          = this.ReadQueryStringData("reqType");
                int depositId = ToInt(this.ReadQueryStringData("depositId"));

                if (reqType == "updateDepositPrintCount")
                {
                    BillingDeposit deposit = billingDbContext.BillingDeposits
                                             .Where(a => a.DepositId == depositId)
                                             .FirstOrDefault <BillingDeposit>();
                    if (deposit != null)
                    {
                        deposit.PrintCount = deposit.PrintCount == null || deposit.PrintCount == 0 ? 1 : deposit.PrintCount + 1;
                        deposit.PrintedOn  = System.DateTime.Now; //Yubraj: 13th August'19
                        deposit.PrintedBy  = currentUser.EmployeeId;
                        billingDbContext.Entry(deposit).Property(a => a.PrintCount).IsModified = true;
                    }
                    billingDbContext.SaveChanges();
                    responseData.Status = "OK";
                }
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        public IActionResult Logout(string returnUrl = null)
        {
            //HttpContext.Session.Set<RbacUser>("currentuser", null);
            //Remove all sessin variable values
            SystemAdminDbContext  adminDbContext = new SystemAdminDbContext(connStringAdmin);
            RbacUser              currentUser    = HttpContext.Session.Get <RbacUser>("currentuser");
            LoginInformationModel LoginInfo      = new LoginInformationModel();

            //once logged out currentuser gets null, so don't go inside if it's null..
            if (currentUser != null)
            {
                LoginInfo.EmployeeId = currentUser.EmployeeId;
                LoginInfo.UserName   = currentUser.UserName;
                LoginInfo.ActionName = "logout";
                LoginInfo.CreatedOn  = System.DateTime.Now;
                adminDbContext.LoginInformation.Add(LoginInfo);
                adminDbContext.SaveChanges();
            }



            RemoveRememberMeCookie();
            RemoveSessionValues();
            //HttpContext.Session.Remove("currentuser");
            LoginViewModel newLogin = new LoginViewModel();

            ViewData["status"] = "logout-success";



            return(View("Login", newLogin));
        }
        public IActionResult Login(LoginViewModel model, string returnUrl = null)
        {
            if (ModelState.IsValid)
            {
                SystemAdminDbContext adminDbContext = new SystemAdminDbContext(connStringAdmin);

                RbacUser validUser = RBAC.GetUser(model.UserName, model.Password);

                LoginInformationModel LoginInfo = new LoginInformationModel();


                //seting session for current valid user
                if (validUser != null)
                {
                    //Check user status is Active or not, If user is InActive then return to login page
                    if (validUser.IsActive == false)
                    {
                        ViewData["status"] = "user-inactive";
                        return(View(model));
                    }
                    validUser.Password = "";

                    LoginInfo.EmployeeId = validUser.EmployeeId;
                    LoginInfo.ActionName = "login";
                    LoginInfo.CreatedOn  = System.DateTime.Now;
                    LoginInfo.UserName   = validUser.UserName;
                    adminDbContext.LoginInformation.Add(LoginInfo);
                    adminDbContext.SaveChanges();

                    SetSessionVariable(validUser);

                    if (model.RememberMe)
                    {
                        DateTime centuryBegin = new DateTime(2001, 1, 1);
                        DateTime currentDate  = DateTime.Now;
                        //Generate unique tick to make it a selector
                        long ticksElapsed = currentDate.Ticks - centuryBegin.Ticks;

                        SetRememberMeCookieVariable(ticksElapsed, validUser.UserId);
                    }
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    LoginInfo.ActionName = "invalid-login-attempt";
                    LoginInfo.EmployeeId = null;
                    LoginInfo.CreatedOn  = System.DateTime.Now;
                    LoginInfo.UserName   = model.UserName;
                    adminDbContext.LoginInformation.Add(LoginInfo);
                    adminDbContext.SaveChanges();
                }



                ViewData["status"] = "login-failed";
                return(View(model));
            }
            //If we got this far, something failed, redisplay form
            return(View(model));
        }
        //This method set session variable i.e.current login user, permissions for current login
        public void SetSessionVariable(RbacUser currentValidUser)
        {
            try
            {
                //set currentuser
                HttpContext.Session.Set <RbacUser>("currentuser", currentValidUser);
                RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
                if (currentUser != null)
                {
                    //Get all valid permission for input user
                    List <RbacPermission> validPermissionList = RBAC.GetUserAllPermissions(currentUser.UserId).ToList();
                    //List<RbacRole> validRoles =
                    //Set permission session variable value for logged in user
                    HttpContext.Session.Set <List <RbacPermission> >("validpermissionlist", validPermissionList);

                    //Get all valid permission for input user
                    List <RbacRole> validUsrRoles = RBAC.GetUserAllRoles(currentUser.UserId);
                    //List<RbacRole> validRoles =
                    //Set permission session variable value for logged in user
                    HttpContext.Session.Set <List <RbacRole> >("user-roles", validUsrRoles);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Authorizes a user 
        /// For authorized users, it returns the WindowsIdentity in which context commands need to be executed
        /// </summary>
        /// <param name="userInfo">User information</param>
        /// <param name="quota">User quota value</param>
        /// <returns>WindowsIdentiy in which context commands need to be executed</returns>
        public WindowsIdentity AuthorizeUser(RbacUser.RbacUserInfo userInfo, out Microsoft.Management.Odata.UserQuota quota)
        {
            RbacUser user = this.FindUser(userInfo);
            quota = new Microsoft.Management.Odata.UserQuota(user.Quota.MaxConcurrentRequests, user.Quota.MaxRequestsPerTimeSlot, user.Quota.Timeslot);

            return user.Group.GetWindowsIdentity(userInfo.WindowsIdentity);
        }
Пример #8
0
        public async Task <IHttpActionResult> AddNew([FromBody] RbacRegisterUser user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            RbacUser dbUser = new RbacUser(user.UserName);

            if (dbUser != null)
            {
                return(BadRequest(string.Format("User '{0}' already exists!", user.UserName)));
            }

            RbacRole role = new RbacRole(user.RoleId);

            if (role == null)
            {
                return(BadRequest(string.Format("Role id '{0}' not found!", user.RoleId)));
            }

            RbacUser newUser = Rbac.CreateUser(user.UserName, user.FullName, user.Email, user.Password, role);

            if ((newUser != null) && (newUser.UserId > 0))
            {
                return(Ok());
            }

            return(BadRequest("Cannot create user!"));
        }
Пример #9
0
        public async Task <IHttpActionResult> Register([FromBody] RbacRegisterUser user)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (user.RbacId == 0)
            {
                return(BadRequest("Rbac id cannot be zero!"));
            }

            Rbac rbac = new Rbac(user.RbacId, "");

            if (rbac == null)
            {
                return(BadRequest(string.Format("Rbac instance with rbac id '{0}' not found!", user.RbacId)));
            }

            RbacRole role = new RbacRole(user.RoleId);

            if (role == null)
            {
                return(BadRequest(string.Format("Role id '{0}' not found!", user.RoleId)));
            }

            RbacUser newUser = rbac.CreateUser(user.UserName, user.FullName, user.Email, user.Password, role);

            if ((newUser != null) && (newUser.UserId > 0))
            {
                return(Ok());
            }

            return(BadRequest("Cannot create user!"));
        }
Пример #10
0
 //This method used for fire stored procedure and do database backup
 private Boolean BackupDatabase(string connStringAdmin)
 {
     try
     {
         using (SqlConnection con = new SqlConnection(connStringAdmin))
         {
             using (SqlCommand cmd = new SqlCommand("SP_SysADM_Backup_Database", con))
             {
                 cmd.CommandTimeout = 300;// 5 minute for this command to copy the patientfiles while doing DB backup
                 //Get Current Loggedin user via session
                 RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
                 int      CreatedBy   = currentUser.EmployeeId;
                 cmd.CommandType = CommandType.StoredProcedure;
                 cmd.Parameters.Add("@CreatedBy", SqlDbType.Int).Value      = CreatedBy;
                 cmd.Parameters.Add("@ActionType", SqlDbType.VarChar).Value = "manual";
                 con.Open();
                 string result = (string)cmd.ExecuteScalar();
                 return(result == "success" ? true : false);
             }
         }
         //return true;
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #11
0
 private Boolean PostDBLog(string connStringAdmin, DatabaseLogModel databaseLogModel)
 {
     try
     {
         using (SqlConnection con = new SqlConnection(connStringAdmin))
         {
             using (SqlCommand cmd = new SqlCommand("SP_SysADM_Insert_DBLog", con))
             {
                 //Get Current Loggedin user via session
                 RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
                 databaseLogModel.CreatedBy = currentUser.EmployeeId;
                 cmd.CommandType            = CommandType.StoredProcedure;
                 cmd.Parameters.Add("@FileName", SqlDbType.VarChar).Value        = databaseLogModel.FileName;
                 cmd.Parameters.Add("@FolderPath", SqlDbType.VarChar).Value      = databaseLogModel.FolderPath;
                 cmd.Parameters.Add("@DatabaseName", SqlDbType.VarChar).Value    = databaseLogModel.DatabaseName;
                 cmd.Parameters.Add("@DatabaseVersion", SqlDbType.VarChar).Value = databaseLogModel.DatabaseVersion;
                 cmd.Parameters.Add("@IsDBRestorable", SqlDbType.Bit).Value      = databaseLogModel.IsDBRestorable;
                 cmd.Parameters.Add("@Action", SqlDbType.VarChar).Value          = databaseLogModel.Action;
                 cmd.Parameters.Add("@ActionType", SqlDbType.VarChar).Value      = databaseLogModel.ActionType;
                 cmd.Parameters.Add("@Status", SqlDbType.VarChar).Value          = databaseLogModel.Status;
                 cmd.Parameters.Add("@MessageDetail", SqlDbType.VarChar).Value   = databaseLogModel.MessageDetail;
                 cmd.Parameters.Add("@Remarks", SqlDbType.VarChar).Value         = databaseLogModel.Remarks;
                 cmd.Parameters.Add("@CreatedBy", SqlDbType.Int).Value           = databaseLogModel.CreatedBy;
                 cmd.Parameters.Add("@IsActive", SqlDbType.Bit).Value            = databaseLogModel.IsActive;
                 con.Open();
                 cmd.ExecuteNonQuery();
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #12
0
        private static async Task <GraphArrayWrapper <GraphUser> > SearchGraph(RbacUser rbacUser)
        {
            var graphResponse = await graphClient.HttpInvoke(HttpMethod.Get, ArmUriTemplates.GraphSearchUsers.Bind(rbacUser));

            await graphResponse.EnsureSuccessStatusCodeWithFullError();

            return(await graphResponse.Content.ReadAsAsync <GraphArrayWrapper <GraphUser> >());
        }
 //move it out of patientcontroller to Maincontroller or something..
 public IActionResult AppMain()
 {
     try
     {
         RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
         ViewData["currentuser"] = currentUser;
         //getting only the root level routes for this view.//set getHierarchy = true for AppMain (special condition.)
         ViewData["validroutes"] = RBAC.GetRoutesForUser(currentUser.UserId, getHiearrchy: true);
         return(View());
     }
     catch (Exception ex)
     {
         //throw ex;
         //Redirect to Login page If user is not login
         return(RedirectToAction("Login", "Account"));
     }
 }
Пример #14
0
 private void LoadUserParameters()
 {
     lvwUserParameters.Items.Clear();
     if (cbUsers.SelectedIndex > -1)
     {
         var      selUser = (RbacUser)cbUsers.SelectedItem;
         RbacUser user    = new RbacUser(selUser.UserName);
         if (user.Parameters != null)
         {
             foreach (var paramter in user.Parameters)
             {
                 ListViewItem item = new ListViewItem(paramter.Key);
                 item.SubItems.Add(paramter.Value);
                 lvwUserParameters.Items.Add(item);
             }
         }
     }
 }
        [HttpPost]// POST api/values
        public string Post()
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>(); //type 'object' since we have variable return types

            responseData.Status = "OK";                                                   //by default status would be OK, hence assigning at the top
            string ipDataString = this.ReadPostData();
            string reqType      = this.ReadQueryStringData("reqType");

            try
            {
                RbacUser         currentUser      = HttpContext.Session.Get <RbacUser>("currentuser");
                BillingDbContext billingDbContext = new BillingDbContext(connString);

                if (reqType == "Deposit")
                {
                    BillingDeposit deposit = DanpheJSONConvert.DeserializeObject <BillingDeposit>(ipDataString);
                    deposit.CreatedOn = System.DateTime.Now;
                    deposit.CreatedBy = currentUser.EmployeeId;
                    BillingFiscalYear fiscYear = BillingBL.GetFiscalYear(connString);
                    deposit.FiscalYearId = fiscYear.FiscalYearId;
                    if (deposit.DepositType != "depositdeduct")
                    {
                        deposit.ReceiptNo = BillingBL.GetDepositReceiptNo(connString);
                    }
                    deposit.FiscalYear = fiscYear.FiscalYearFormatted;
                    EmployeeModel currentEmp = billingDbContext.Employee.Where(emp => emp.EmployeeId == currentUser.EmployeeId).FirstOrDefault();
                    deposit.BillingUser = currentEmp.FirstName + " " + currentEmp.LastName;

                    deposit.IsActive = true; //yubraj: 18th Dec '18

                    billingDbContext.BillingDeposits.Add(deposit);
                    billingDbContext.SaveChanges();
                    responseData.Status  = "OK";
                    responseData.Results = deposit;//check if we need to send back the whole input object back to client.--sudarshan
                }
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        public string Put()
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();
            DicomDbContext dbContextDicom            = new DicomDbContext(connStringPACSServer);
            RbacUser       currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
            string         inputSting  = this.ReadPostData();

            try
            {
                //if(inputSting !=null && reqType="putToolData")
                //{
                object clientData = DanpheJSONConvert.DeserializeObject <object>(inputSting);

                JObject obj = JObject.Parse(inputSting);


                var FileToolData = obj["FileToolData"].ToString();
                var DicomFileId  = int.Parse(obj["DicomFileId"]["dicomFileId"].ToString());

                DicomFileInfoModel getDataForUpdate = dbContextDicom.DicomFiles.Where(d => d.DicomFileId == DicomFileId).FirstOrDefault <DicomFileInfoModel>();

                getDataForUpdate.FileToolData = FileToolData;
                getDataForUpdate.ModifiedBy   = currentUser.UserId;
                getDataForUpdate.ModifiedOn   = DateTime.Now;
                dbContextDicom.DicomFiles.Attach(getDataForUpdate);
                dbContextDicom.Entry(getDataForUpdate).Property(u => u.CreatedOn).IsModified = true;
                dbContextDicom.Entry(getDataForUpdate).State = EntityState.Modified;
                dbContextDicom.SaveChanges();
                responseData.Results = getDataForUpdate.DicomFileId;
                responseData.Status  = "OK";
                //}
                //else{
                //        responseData.Status = "Failed";
                //        responseData.Results = "input data is not available";
                //    }
            }
            catch (Exception ex)
            {
                responseData.Status = "Failed";
            }
            return(DanpheJSONConvert.SerializeObject(responseData));
        }
        public string Post()
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();
            RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");

            try
            {
                string reqType = this.ReadQueryStringData("reqType");
                string ipStr   = this.ReadPostData();

                DoctorsDbContext dbContext = new DoctorsDbContext(connString);
                if (reqType == "addPatientData")
                {
                    List <VisitSummaryModel> patDataList = DanpheJSONConvert.
                                                           DeserializeObject <List <VisitSummaryModel> >(ipStr);
                    if (patDataList != null)
                    {
                        patDataList.ForEach(patData =>
                        {
                            patData.CreatedOn = DateTime.Now;
                            patData.CreatedBy = currentUser.CreatedBy;
                            dbContext.VisitSummary.Add(patData);
                        });

                        dbContext.SaveChanges();
                        responseData.Results = patDataList;
                    }
                    else
                    {
                        throw new Exception("Invalid Patient object.");
                    }
                }

                responseData.Status = "OK";
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
Пример #18
0
        public void Setup()
        {
            Rbac rbac = new Rbac();

            rbac = rbac.CreateNew("books", "books description",
                                  @"Data Source=LPT-03084856325\SQLEXPRESS;Initial Catalog=books;Integrated Security=True",
                                  File.ReadAllText(Path.Combine(_rootDir, "Books", "entitlement.xml")));

            InsertRoles(rbac);
            GenericParserAdapter parser = new GenericParserAdapter(Path.Combine(_rootDir, "Books", "BooksUsers.csv"));

            parser.FirstRowHasHeader = true;
            DataTable table = parser.GetDataTable();


            if (table.Rows.Count > 0)
            {
                foreach (DataRow dataRow in table.Rows)
                {
                    RbacRole role = roles.Where(r => r.Name == dataRow["Role"].ToString()).SingleOrDefault();
                    if (role == null)
                    {
                        throw new Exception(dataRow["Role"].ToString() + " is not defined!");
                    }

                    RbacUser user = Rbac.CreateUser(dataRow[0].ToString(), dataRow[1].ToString(), dataRow[2].ToString(), "password", role);
                    if (role.Name == "role_city_mgr")
                    {
                        user.AddParameter("{CityNames}", "('New York','Charlotte')");
                    }
                    else if (role.Name == "role_state_mgr")
                    {
                        user.AddParameter("{ShortNames}", "('NY','NC')");
                    }
                    else if (role.Name == "role_country_mgr")
                    {
                        user.AddParameter("{CountryCodes}", "('IN','US')");
                    }
                }
            }
        }
 public IActionResult Post([FromBody]InventoryCompanyModel value)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return BadRequest(ModelState);
         }
         RbacUser currentUser = HttpContext.Session.Get<RbacUser>("currentuser");
         value.CreatedBy = currentUser.EmployeeId;
         _inventoryCompanyService.AddCompany(value);
         responseData.Results = _inventoryCompanyService.GetCompany(value.CompanyId);
         responseData.Status = "OK";
     }
     catch (Exception ex)
     {
         responseData.Status = "Failed";
         responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
     }
     return Ok(responseData);
 }
 public IActionResult Post([FromBody] FractionCalculationModel[] value)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(BadRequest(ModelState));
         }
         RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
         //value.CreatedBy = currentUser.EmployeeId;
         //responseData.Results = _FractionCalculationService.GetFractionCalculation(value.FractionCalculationId);
         responseData.Results = _FractionCalculationService.AddFractionCalculation(value);
         responseData.Status  = "OK";
     }
     catch (Exception ex)
     {
         responseData.Status       = "Failed";
         responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
     }
     return(Ok(responseData));
 }
        public string Update(/*string reqType*/)
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();

            AccountingDbContext accountingDBContext = new AccountingDbContext(connString);


            try
            {
                //string str = Request.Form.Keys.First<string>();
                string   str         = this.ReadPostData();
                string   reqType     = this.ReadQueryStringData("reqType");
                RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
 public override void OnActionExecuting(ActionExecutingContext context)
 {
     try
     {
         base.OnActionExecuting(context);
         //Checking user is logged in or not
         RbacUser currentUser = context.HttpContext.Session.Get <RbacUser>("currentuser");
         if (currentUser != null)
         {
             //Get all valid permissions for logged in user from session variable
             List <RbacPermission> validPermissionList = context.HttpContext.Session.Get <List <RbacPermission> >("validpermissionlist");
             if (validPermissionList.Count > 0)
             {
                 RbacPermission currentPermission = validPermissionList.Find(a => a.PermissionName == PermissionName);
                 //Check is currentPermission has value or not
                 if (currentPermission == null || currentPermission.PermissionName == null)
                 {
                     //Redirect to PageNot found page
                     context.Result = new RedirectToRouteResult(new RouteValueDictionary {
                         { "controller", "Account" }, { "action", "PageNotFound" }
                     });
                 }
             }
             else
             {
                 //Redirect to page not found page
                 context.Result = new RedirectToRouteResult(new RouteValueDictionary {
                     { "controller", "Account" }, { "action", "PageNotFound" }
                 });
             }
         }
     }
     catch (Exception ex)
     {
         //Write exception handling logic here
         throw ex;
     }
 }
        public IActionResult ChangePassword()
        {
            //RbacUser validUser = RBAC.GetUser(chmodel.UserName, chmodel.Password);
            //string str = Request.Form.Keys.First<string>();
            Stream req = Request.Body;

            req.Seek(0, System.IO.SeekOrigin.Begin);
            string str = new StreamReader(req).ReadToEnd();
            ChangePasswordViewModel chmodel = JsonConvert.DeserializeObject <ChangePasswordViewModel>(str);
            RbacUser updatepass             = RBAC.UpdateDefaultPasswordOfUser(chmodel.UserName, chmodel.Password, chmodel.ConfirmPassword);

            if (updatepass != null)
            {
                updatepass.NeedsPasswordUpdate = false;

                //Update property for Current Session as well.
                RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");
                currentUser.NeedsPasswordUpdate = false;
                HttpContext.Session.Set <RbacUser>("currentuser", currentUser);

                RemoveRememberMeCookie();
                RemoveSessionValues();
                responseData.Status  = "OK";
                responseData.Results = null; ////Assigning Result to NULL because we Don't have to Show Password of User in Client side (i.e Client Debugging Side)
                var s = Json(DanpheJSONConvert.SerializeObject(responseData, true));

                return(s);
            }
            else
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = "Current Password is Wrong";
                var s = Json(DanpheJSONConvert.SerializeObject(responseData, true));

                return(s);
            }
        }
        public string Put()
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();
            RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");

            try
            {
                string reqType = this.ReadQueryStringData("reqType");
                string ipStr   = this.ReadPostData();

                DoctorsDbContext dbContext = new DoctorsDbContext(connString);
                if (reqType == "updatePatientData")
                {
                    List <VisitSummaryModel> patDataList = DanpheJSONConvert.DeserializeObject <List <VisitSummaryModel> >(ipStr);

                    patDataList.ForEach(data =>
                    {
                        data.ModifiedOn             = DateTime.Now;
                        data.ModifiedBy             = currentUser.CreatedBy;
                        dbContext.Entry(data).State = EntityState.Modified;
                        dbContext.Entry(data).Property(u => u.CreatedBy).IsModified = false;
                        dbContext.Entry(data).Property(u => u.CreatedOn).IsModified = false;
                    });

                    dbContext.SaveChanges();
                    responseData.Results = patDataList;
                }
                responseData.Status = "OK";
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        public string Post()
        {
            //if reqtype=employee, then use masterdbcontext.employee.add  and so on for others.

            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>(); //type 'object' since we have variable return types

            responseData.Status = "OK";                                                   //by default status would be OK, hence assigning at the top
            AccountingDbContext accountingDBContext = new AccountingDbContext(connString);
            RbacUser            currentUser         = HttpContext.Session.Get <RbacUser>("currentuser");

            try
            {
                string str         = this.ReadPostData();
                string reqType     = this.ReadQueryStringData("reqType");
                string companyName = this.ReadQueryStringData("companyName");
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }

            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        public string Put(string reqType, int settlementId)
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();

            responseData.Status = "OK";//by default status would be OK, hence assigning at the top
            try
            {
                int patientId             = ToInt(this.ReadQueryStringData("patientId"));
                int insuranceProviderId   = ToInt(this.ReadQueryStringData("insuranceProviderId"));
                int updatedInsBalance     = ToInt(this.ReadQueryStringData("updatedInsBalance"));
                int patientInsurancePkgId = ToInt(this.ReadQueryStringData("patientInsurancePkgId"));
                int couterId = ToInt(this.ReadQueryStringData("counterId"));
                BillingDbContext billingDbContext = new BillingDbContext(connString);
                RbacUser         currentUser      = HttpContext.Session.Get <RbacUser>("currentuser");

                if (reqType == "update-insurance-balance")
                {
                    BillingBL.UpdateInsuranceCurrentBalance(connString,
                                                            patientId,
                                                            insuranceProviderId,
                                                            currentUser.EmployeeId,
                                                            updatedInsBalance);
                    responseData.Status = "OK";
                }

                else if (reqType == "close-insurance-package")
                {
                    PatientInsurancePackageTransactionModel insPkg = billingDbContext.PatientInsurancePackageTransactions
                                                                     .Where(ins => ins.PatientInsurancePackageId == patientInsurancePkgId).FirstOrDefault();
                    if (insPkg != null)
                    {
                        insPkg.EndDate     = DateTime.Now;
                        insPkg.IsCompleted = true;
                        insPkg.ModifiedOn  = DateTime.Now;
                        insPkg.ModifiedBy  = currentUser.EmployeeId;
                        billingDbContext.Entry(insPkg).State = EntityState.Modified;
                        billingDbContext.SaveChanges();
                        responseData.Status = "OK";
                    }
                }

                else if (reqType == "update-insurance-claim")
                {
                    string       str = this.ReadPostData();
                    List <Int32> billingTransactionIdList         = JsonConvert.DeserializeObject <List <Int32> >(str);
                    List <BillingTransactionModel> claimInsurance = new List <BillingTransactionModel>();
                    DateTime settlementDate = DateTime.Now;
                    foreach (var invoice in billingTransactionIdList)
                    {
                        BillingTransactionModel billingTransaction = billingDbContext.BillingTransactions
                                                                     .Where(a => a.BillingTransactionId == invoice)
                                                                     .FirstOrDefault <BillingTransactionModel>();

                        if (billingTransaction != null)
                        {
                            billingDbContext.BillingTransactions.Attach(billingTransaction);
                            billingTransaction.BillStatus           = "paid";
                            billingTransaction.PaidAmount           = billingTransaction.TotalAmount;
                            billingTransaction.PaidDate             = settlementDate;
                            billingTransaction.PaymentReceivedBy    = currentUser.EmployeeId;
                            billingTransaction.PaidCounterId        = couterId;
                            billingTransaction.IsInsuranceClaimed   = true;
                            billingTransaction.InsuranceClaimedDate = DateTime.Now;
                            billingDbContext.Entry(billingTransaction).Property(b => b.IsInsuranceClaimed).IsModified   = true;
                            billingDbContext.Entry(billingTransaction).Property(b => b.InsuranceClaimedDate).IsModified = true;
                            billingDbContext.Entry(billingTransaction).Property(b => b.BillStatus).IsModified           = true;
                            billingDbContext.Entry(billingTransaction).Property(b => b.PaidAmount).IsModified           = true;
                            billingDbContext.Entry(billingTransaction).Property(b => b.PaidDate).IsModified             = true;
                            billingDbContext.Entry(billingTransaction).Property(b => b.PaymentReceivedBy).IsModified    = true;
                            billingDbContext.Entry(billingTransaction).Property(b => b.PaidCounterId).IsModified        = true;



                            List <BillingTransactionItemModel> txnItems = billingDbContext.BillingTransactionItems
                                                                          .Where(b => b.BillingTransactionId == billingTransaction.BillingTransactionId).ToList();

                            if (txnItems != null && txnItems.Count > 0)
                            {
                                foreach (var txnItm in txnItems)
                                {
                                    billingDbContext.BillingTransactionItems.Attach(txnItm);

                                    txnItm.BillStatus        = "paid";
                                    txnItm.PaidDate          = settlementDate;
                                    txnItm.PaidCounterId     = couterId;
                                    txnItm.PaymentReceivedBy = currentUser.EmployeeId;
                                    billingDbContext.Entry(txnItm).Property(b => b.BillStatus).IsModified        = true;
                                    billingDbContext.Entry(txnItm).Property(b => b.PaidDate).IsModified          = true;
                                    billingDbContext.Entry(txnItm).Property(b => b.PaymentReceivedBy).IsModified = true;
                                    billingDbContext.Entry(txnItm).Property(b => b.PaidCounterId).IsModified     = true;
                                }
                                billingDbContext.SaveChanges();
                            }
                            //claimInsurance.Add(billingTransaction);
                        }
                    }
                    billingDbContext.SaveChanges();
                    responseData.Status  = "OK";
                    responseData.Results = claimInsurance;
                }

                else
                {
                    responseData.Status       = "failed";
                    responseData.ErrorMessage = "Invalid request type.";
                }


                //responseData.Results = null;
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        /// <summary>
        /// Populates the RbacSystem from an RBAC configuration file
        /// </summary>
        /// <param name="configPath">full path to the config file</param>
        private void Populate(string configPath)
        {
            this.Reset();

            XmlConfiguration rbacConfiguration = XmlConfiguration.Create(configPath);

            foreach (XmlGroup group in rbacConfiguration.Groups)
            {
                WindowsIdentity identity = null;

                try
                {
                    if (group.UserName == null || group.Password == null)
                    {
                        if (group.UserName != null || group.Password != null)
                        {
                            if (group.UserName == null)
                            {
                                throw new ArgumentException("User name is null for group " + group.Name);
                            }

                            if (group.Password == null)
                            {
                                throw new ArgumentException("Password is null for group " + group.Name);
                            }
                        }
                    }
                    else
                    {
                        if (group.DomainName == null)
                        {
                            group.DomainName = Environment.MachineName;
                        }

                        identity = WindowsIdentityHelper.GetWindowsIdentity(group.UserName, group.Password, group.DomainName);
                    }
                }
                catch (Exception)
                {
                    // Not able to get the impersonated WindowsIdentity
                    // use the current WindowsIdentity
                    identity = WindowsIdentity.GetCurrent();
                }

                this.Groups.Add(new RbacGroup(group));
            }

            foreach (XmlUser userConfig in rbacConfiguration.Users)
            {
                RbacUser user = new RbacUser(new RbacUser.RbacUserInfo(userConfig.Name, userConfig.AuthenticationType, userConfig.DomainName), userConfig.Quota);
                RbacGroup group = this.Groups.Find(item => item.Name == userConfig.GroupName);
                if (group == null)
                {
                    throw new ArgumentException("Group not found = " + userConfig.GroupName);
                }

                user.Group = group;

                this.Users.Add(user);
            }
        }
        public IActionResult Login(string returnUrl = null)
        {
            DateTime centuryBegin = new DateTime(2001, 1, 1);
            DateTime currentDate  = DateTime.Now;
            //Generate unique tick to make it a selector
            long ticksElapsed = currentDate.Ticks - centuryBegin.Ticks;

            //Generate unique string associated with selector --called Validator
            Guid   gd         = Guid.NewGuid();
            string GuidString = Convert.ToBase64String(gd.ToByteArray());

            GuidString = GuidString.Replace("=", "");
            GuidString = GuidString.Replace("+", "");

            //tick is also used as a salt
            GuidString = GuidString + ticksElapsed.ToString();

            //generate Hash of the Validator, that can be used as a token
            string msgDigest = ComputeSha256Hash(GuidString);


            //start: sud:16Jul'19-- If One user is already logged in - (check from session) - Load home index page directly.
            RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser");

            if (currentUser != null && currentUser.UserId != 0)
            {
                return(RedirectToAction("Index", "Home"));
            }
            //end: sud:16Jul'19-- If One user is already logged in - (check from session) - Load home index page directly.


            if (!string.IsNullOrEmpty(Request.Cookies["uRef"]))
            {
                SystemAdminDbContext adminDbContext = new SystemAdminDbContext(connStringAdmin);

                var selector          = Convert.ToInt64(Request.Cookies["uRef"]);
                var validatorWithSalt = Request.Cookies["uData"] + Request.Cookies["uRef"];
                var hashedValidator   = ComputeSha256Hash(validatorWithSalt);

                //To make sure that only one UserId will be selected at a time
                var userIdList = (from sysAuthInfo in adminDbContext.CookieInformation
                                  where sysAuthInfo.Selector == selector &&
                                  sysAuthInfo.HashedToken == hashedValidator
                                  select sysAuthInfo.UserId).ToList();


                if (userIdList.Count == 1)
                {
                    RbacUser       validUser = RBAC.GetUser(userIdList[0]);
                    LoginViewModel model     = new LoginViewModel();
                    model.UserName = validUser.UserName;

                    //seting session for current valid user
                    if (validUser != null)
                    {
                        //Check user status is Active or not, If user is InActive then return to login page
                        if (validUser.IsActive == false)
                        {
                            RemoveRememberMeCookie();
                            RemoveSessionValues();
                            ViewData["status"] = "user-inactive";
                            return(View(model));
                        }

                        validUser.Password = "";

                        UpdateRememberMeCookie(selector);
                        SetSessionVariable(validUser);
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    RemoveRememberMeCookie();
                    RemoveSessionValues();
                    return(View());
                }
            }


            CoreDbContext coreDbContext = new CoreDbContext(connString);

            ParameterModel licenseParam = coreDbContext.Parameters.Where(p => p.ParameterGroupName == "TenantMgnt" && p.ParameterName == "SoftwareLicense")
                                          .FirstOrDefault();

            string paramValue = licenseParam != null ? licenseParam.ParameterValue : null;

            if (paramValue != null)
            {
                // var paramValueJson = Newtonsoft.Json.Linq.JObject.Parse(paramValue);
                //format of parameter:softwarelicense is as below
                var definition = new { StartDate = "", EndDate = "", ExpiryNoticeDays = "", LicenseType = "" };
                var license    = JsonConvert.DeserializeAnonymousType(paramValue, definition);

                DateTime startDate        = Convert.ToDateTime(RBAC.DecryptPassword(license.StartDate));
                DateTime endDate          = Convert.ToDateTime(RBAC.DecryptPassword(license.EndDate));
                int      expiryNoticeDays = Convert.ToInt32(RBAC.DecryptPassword(license.ExpiryNoticeDays));

                double remainingDays = (endDate - DateTime.Now).TotalDays;

                if (remainingDays < 0)
                {
                    TempData["LicenseMessage"] = "License expired on: " + endDate.ToString("yyyy-MMM-dd");

                    return(RedirectToAction("LicenseExpired", "Account"));
                }

                if (expiryNoticeDays > remainingDays)
                {
                    ViewData["ExpiryNotice"] = "Notice ! Your Software License is expiring in " + Convert.ToInt32(remainingDays) + " days.";

                    //display remaining days through viewdata.
                }
            }
            else
            {
                TempData["LicenseMessage"] = "License Information not found..";

                return(RedirectToAction("LicenseExpired", "Account"));
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View());
        }
        /// <summary>
        /// Finds a user in the RbacSytem
        /// </summary>
        /// <param name="userInfo">User information</param>
        /// <returns>User from RbacSystem which was searched</returns>
        private RbacUser FindUser(RbacUser.RbacUserInfo userInfo)
        {
            RbacUser user = this.Users.Find(item => item.UserInfo.Equals(userInfo));
            if (user == null)
            {
                throw new ArgumentException("User not found. Name = " + userInfo.Name + " Authentication Type = " + userInfo.AuthenticationType);
            }

            return user;
        }
 /// <summary>
 /// Gets management system execution state membershipId for a user
 /// </summary>
 /// <param name="userInfo">User information</param>
 /// <returns>Managment system execution state membershipId</returns>
 public string GetMembershipId(RbacUser.RbacUserInfo userInfo)
 {
     return this.FindUser(userInfo).GetMembershipId();
 }
 public static Boolean StockTransferToPharmacy(List <WARDStockModel> stkTransfer, WardSupplyDbContext wardSupplyDbContext, PharmacyDbContext pharmacyDbContext, RbacUser currentUser)
 {
     //Transaction Begins
     using (var dbContextTransaction = wardSupplyDbContext.Database.BeginTransaction())
     {
         try
         {
             if (stkTransfer != null)
             {
                 for (int i = 0; i < stkTransfer.Count; i++)
                 {
                     var            stockId      = stkTransfer[i].StockId;
                     WARDStockModel updatedStock = (from stock in wardSupplyDbContext.WARDStockModel
                                                    where stock.StockId == stockId
                                                    select stock
                                                    ).FirstOrDefault();
                     updatedStock.AvailableQuantity = (int)(Convert.ToDecimal(stkTransfer[i].AvailableQuantity)) - (int)(Convert.ToDecimal(stkTransfer[i].DispachedQuantity));
                     wardSupplyDbContext.Entry(updatedStock).Property(a => a.AvailableQuantity).IsModified = true;
                     //transaction table
                     var selectedstockTxnItm = new WARDTransactionModel();
                     selectedstockTxnItm.WardId          = updatedStock.WardId;
                     selectedstockTxnItm.ItemId          = updatedStock.ItemId;
                     selectedstockTxnItm.StockId         = updatedStock.StockId;
                     selectedstockTxnItm.TransactionId   = 0;
                     selectedstockTxnItm.Quantity        = (int)(Convert.ToDecimal(stkTransfer[i].DispachedQuantity));
                     selectedstockTxnItm.TransactionType = "WardToPharmacy";
                     selectedstockTxnItm.Remarks         = "Sent From Ward To Pharmacy";
                     selectedstockTxnItm.CreatedBy       = currentUser.UserName;
                     selectedstockTxnItm.CreatedOn       = DateTime.Now;
                     selectedstockTxnItm.IsWard          = true;
                     wardSupplyDbContext.TransactionModel.Add(selectedstockTxnItm);
                     wardSupplyDbContext.SaveChanges();
                     //pharmacy stock changes
                     var            itemId  = stkTransfer[i].ItemId;
                     var            batchNo = stkTransfer[i].BatchNo;
                     PHRMStockModel updatedPharmacyStock = (from stock in pharmacyDbContext.PHRMStock
                                                            where stock.ItemId == itemId && stock.BatchNo == batchNo
                                                            select stock
                                                            ).FirstOrDefault();
                     updatedPharmacyStock.AvailableQuantity = (int)(Convert.ToDecimal(updatedPharmacyStock.AvailableQuantity)) + (int)(Convert.ToDecimal(stkTransfer[i].DispachedQuantity));
                     pharmacyDbContext.Entry(updatedPharmacyStock).Property(a => a.AvailableQuantity).IsModified = true;
                     //Pharmacy Transaction Table
                     var phrmStockTxn = new PHRMStockTransactionItemsModel();
                     phrmStockTxn.ItemId             = updatedPharmacyStock.ItemId;
                     phrmStockTxn.BatchNo            = updatedPharmacyStock.BatchNo;
                     phrmStockTxn.ExpiryDate         = stkTransfer[i].ExpiryDate;
                     phrmStockTxn.Quantity           = (int)(Convert.ToDecimal(stkTransfer[i].DispachedQuantity));
                     phrmStockTxn.FreeQuantity       = 0;
                     phrmStockTxn.Price              = (int)(Convert.ToDecimal(stkTransfer[i].MRP));
                     phrmStockTxn.DiscountPercentage = 0;
                     phrmStockTxn.VATPercentage      = 0;
                     phrmStockTxn.SubTotal           = (int)(Convert.ToDecimal(phrmStockTxn.Quantity)) * (int)(Convert.ToDecimal(phrmStockTxn.Price));
                     phrmStockTxn.TotalAmount        = phrmStockTxn.SubTotal;
                     phrmStockTxn.InOut              = "in";
                     phrmStockTxn.CreatedBy          = currentUser.UserId;
                     phrmStockTxn.CreatedOn          = DateTime.Now;
                     phrmStockTxn.MRP             = phrmStockTxn.Price;
                     phrmStockTxn.TransactionType = "WardToPharmacy";
                     pharmacyDbContext.PHRMStockTransactionModel.Add(phrmStockTxn);
                     pharmacyDbContext.SaveChanges();
                 }
             }
             dbContextTransaction.Commit();
             return(true);
         }
         catch (Exception ex)
         {
             dbContextTransaction.Rollback();
             throw ex;
         }
     }
 }
Пример #32
0
 public async Task CreateAsync(RbacUser user)
 {
     await _userRepository.AddAsync(user);
 }
Пример #33
0
        public void Setup(Options options)
        {
            if (string.IsNullOrEmpty(options.ConnectionString))
            {
                WriteErrorLine("Connection string is required. Please use -x <connection string>");
                return;
            }

            Rbac rbac = new Rbac();

            rbac = rbac.CreateNew("books", "books description",
                                  options.ConnectionString,
                                  File.ReadAllText(Path.Combine(_rootDir, "Books", "entitlement.xml")));

            Console.Write(".");
            InsertRoles(rbac);
            GenericParserAdapter parser = new GenericParserAdapter(Path.Combine(_rootDir, "Books", "BooksUsers.csv"));

            parser.FirstRowHasHeader = true;
            DataTable table = parser.GetDataTable();


            if (table.Rows.Count > 0)
            {
                foreach (DataRow dataRow in table.Rows)
                {
                    RbacRole role = roles.Where(r => r.Name == dataRow["Role"].ToString()).SingleOrDefault();
                    if (role == null)
                    {
                        throw new Exception(dataRow["Role"].ToString() + " is not defined!");
                    }

                    RbacUser user = Rbac.CreateUser(dataRow[0].ToString(), dataRow[1].ToString(), dataRow[2].ToString(), "password", role);
                    if (role.Name == "role_city_mgr")
                    {
                        user.AddParameter("{CityNames}", "('New York','Charlotte')");
                    }
                    else if (role.Name == "role_state_mgr")
                    {
                        user.AddParameter("{ShortNames}", "('NY','NC')");
                    }
                    else if (role.Name == "role_country_mgr")
                    {
                        user.AddParameter("{CountryCodes}", "('IN','US')");
                    }
                    if (role.Name == "role_guest_user")
                    {
                        user.AddParameter("{CityNames}", "('New York')");
                    }
                    Console.Write(".");
                }
            }
            Console.WriteLine();

            var rbacs = Rbac.GetRbacs();

            if (rbacs != null)
            {
                WriteColor(ConsoleColor.Green, rbacs.Count + " rbac instance(s) created." + Environment.NewLine);
            }
            else
            {
                WriteErrorLine("rbac creation failed!");
            }

            var vroles = Rbac.GetRoles();

            if (vroles != null)
            {
                WriteColor(ConsoleColor.Green, vroles.Count + " role(s) created." + Environment.NewLine);
            }
            else
            {
                WriteErrorLine("role(s) creation failed!");
            }

            var users = Rbac.GetUsers();

            if (users != null)
            {
                WriteColor(ConsoleColor.Green, users.Count + " user(s) created." + Environment.NewLine);
            }
            else
            {
                WriteErrorLine("user(s) creation failed!");
            }
        }
        [HttpPost]// POST api/values
        public string Post(string reqType)
        {
            DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>();
            string ipDataString = this.ReadPostData();

            responseData.Status = "OK";//by default status would be OK, hence assigning at the top
            try
            {
                BillingDbContext billingDbContext = new BillingDbContext(connString);
                MasterDbContext  masterDbContext  = new MasterDbContext(connString);
                RbacUser         currentUser      = HttpContext.Session.Get <RbacUser>("currentuser");
                if (reqType == "returnInvoice")//submit
                {
                    //var currentDate = DateTime.Now;
                    BillInvoiceReturnModel billInvoiceRet = DanpheJSONConvert.DeserializeObject <BillInvoiceReturnModel>(ipDataString);
                    if (billInvoiceRet != null)
                    {
                        //Transaction Begins
                        using (var dbContextTransaction = billingDbContext.Database.BeginTransaction())
                        {
                            try
                            {
                                BillingFiscalYear currFiscYear = BillingBL.GetFiscalYear(billingDbContext);
                                //credit note number will continue from current fiscal year, regardless whether the bill was generated in earlier fiscal year.. (sud:30Aug'18)
                                int?maxCreditNoteNum = billingDbContext.BillReturns.Where(a => a.FiscalYearId == currFiscYear.FiscalYearId).Max(a => a.CreditNoteNumber);
                                billInvoiceRet.CreatedOn = DateTime.Now;
                                if (maxCreditNoteNum == null || !maxCreditNoteNum.HasValue)
                                {
                                    maxCreditNoteNum = 0;
                                }

                                billInvoiceRet.FiscalYear       = currFiscYear.FiscalYearFormatted;
                                billInvoiceRet.FiscalYearId     = currFiscYear.FiscalYearId;
                                billInvoiceRet.CreditNoteNumber = (int?)(maxCreditNoteNum + 1);
                                billInvoiceRet.CreatedBy        = currentUser.EmployeeId;
                                billingDbContext.BillReturns.Add(billInvoiceRet);
                                billingDbContext.SaveChanges();

                                //update transactiontable after bill is returned..
                                int invoiceNo = billInvoiceRet.RefInvoiceNum;
                                //BillingTransactionModel billTxn = billingDbContext.BillingTransactions
                                //  .Where(b => b.InvoiceNo == billInvoiceRet.RefInvoiceNum)
                                //  .FirstOrDefault();
                                //changed: sud: 18July, since Invoice No will repeat with fiscal year, so need to find by billingtransactionid.
                                BillingTransactionModel billTxn = billingDbContext.BillingTransactions
                                                                  .Where(b => b.BillingTransactionId == billInvoiceRet.BillingTransactionId)
                                                                  .FirstOrDefault();
                                billingDbContext.BillingTransactions.Attach(billTxn);
                                billTxn.ReturnStatus = true;
                                billingDbContext.Entry(billTxn).Property(a => a.ReturnStatus).IsModified = true;
                                billingDbContext.SaveChanges();

                                if (billTxn.IsInsuranceBilling == true)
                                {
                                    double deductableInsuranceAmount = (billTxn.TotalAmount ?? default(double)) * -1;
                                    BillingBL.UpdateInsuranceCurrentBalance(connString,
                                                                            billTxn.PatientId,
                                                                            billTxn.InsuranceProviderId ?? default(int),
                                                                            currentUser.EmployeeId, deductableInsuranceAmount, true);
                                }

                                var invoiceItems = billingDbContext.BillingTransactionItems.Where(b => b.BillingTransactionId == billInvoiceRet.BillingTransactionId).ToList();
                                //replaced calling centralized function in BillingBL
                                for (int i = 0; i < invoiceItems.Count; i++)
                                {
                                    invoiceItems[i] = BillingTransactionBL.UpdateTxnItemBillStatus(billingDbContext,
                                                                                                   invoiceItems[i],
                                                                                                   "returned",
                                                                                                   currentUser.EmployeeId);
                                }

                                //Yubraj: 18th Dec '18 :: Updating IsActive in deposit table while invoice return
                                List <BillingDeposit> deposit = (from dpt in billingDbContext.BillingDeposits
                                                                 where dpt.BillingTransactionId == billInvoiceRet.BillingTransactionId &&
                                                                 (dpt.DepositType == "depositdeduct" || dpt.DepositType == "ReturnDeposit")
                                                                 select dpt).ToList();
                                if (deposit != null)
                                {
                                    deposit.ForEach(a =>
                                    {
                                        a.IsActive        = true; //keeping false was affecting the patient deposit info
                                        a.ModifiedRemarks = "Updated after invoice return of BillTxnId: " + billInvoiceRet.BillingTransactionId.ToString();
                                        a.ModifiedOn      = DateTime.Now;
                                        a.ModifiedBy      = currentUser.EmployeeId;
                                    });
                                }
                                billInvoiceRet.ReturnedItems = invoiceItems.ToList();
                                billingDbContext.SaveChanges();

                                dbContextTransaction.Commit(); //end of transaction
                                responseData.Results = billInvoiceRet;
                            }
                            catch (Exception ex)
                            {
                                dbContextTransaction.Rollback();
                                throw ex;
                            }
                        }
                    }
                    else
                    {
                        responseData.Status       = "Failed";
                        responseData.ErrorMessage = "billTransactionitems is invalid";
                    }
                }
            }
            catch (Exception ex)
            {
                responseData.Status       = "Failed";
                responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString();
            }
            return(DanpheJSONConvert.SerializeObject(responseData, true));
        }
        public static Boolean StockTransfer(WARDStockModel stkTransferfromClient, WardSupplyDbContext wardSupplyDbContext, RbacUser currentUser)
        {
            //Transaction Begin
            using (var dbContextTransaction = wardSupplyDbContext.Database.BeginTransaction())
            {
                try
                {
                    List <Boolean> flag = new List <bool>(); //for checking all transaction status


                    var            AvailableQuantity = (int)(Convert.ToDecimal(stkTransferfromClient.AvailableQuantity)) - (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                    WARDStockModel stockDetail       = (from stock in wardSupplyDbContext.WARDStockModel
                                                        where stock.StockId == stkTransferfromClient.StockId
                                                        select stock
                                                        ).FirstOrDefault();
                    stockDetail.AvailableQuantity = AvailableQuantity;

                    wardSupplyDbContext.Entry(stockDetail).Property(a => a.AvailableQuantity).IsModified = true;
                    //add to transaction table
                    var selectedstockTxnItm = new WARDTransactionModel();
                    selectedstockTxnItm.WardId          = stkTransferfromClient.WardId;
                    selectedstockTxnItm.newWardId       = stkTransferfromClient.newWardId;
                    selectedstockTxnItm.ItemId          = stkTransferfromClient.ItemId;
                    selectedstockTxnItm.StockId         = stkTransferfromClient.StockId;
                    selectedstockTxnItm.TransactionId   = 0;
                    selectedstockTxnItm.Quantity        = (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                    selectedstockTxnItm.TransactionType = "WardtoWard";
                    selectedstockTxnItm.Remarks         = stkTransferfromClient.Remarks;
                    selectedstockTxnItm.CreatedBy       = currentUser.UserName;
                    selectedstockTxnItm.CreatedOn       = DateTime.Now;
                    selectedstockTxnItm.IsWard          = true;
                    wardSupplyDbContext.TransactionModel.Add(selectedstockTxnItm);
                    wardSupplyDbContext.SaveChanges();

                    //add stock to new ward
                    stkTransferfromClient.WardId = stkTransferfromClient.newWardId;
                    stockDetail = (from stock in wardSupplyDbContext.WARDStockModel
                                   where stock.WardId == stkTransferfromClient.WardId && stock.ItemId == stkTransferfromClient.ItemId && stock.BatchNo == stkTransferfromClient.BatchNo
                                   select stock
                                   ).FirstOrDefault();
                    if (stockDetail != null)
                    {
                        stockDetail.AvailableQuantity = stockDetail.AvailableQuantity + (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                        wardSupplyDbContext.Entry(stockDetail).Property(a => a.AvailableQuantity).IsModified = true;
                        wardSupplyDbContext.SaveChanges();
                    }
                    else
                    {
                        stkTransferfromClient.AvailableQuantity = (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                        wardSupplyDbContext.WARDStockModel.Add(stkTransferfromClient);
                        wardSupplyDbContext.SaveChanges();
                    }
                    dbContextTransaction.Commit();//Commit Transaction
                    return(true);
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    throw ex;
                }
                //return false;
            }
        }
Пример #36
0
 public async Task DeleteAsync(RbacUser user)
 {
     await _userRepository.DeleteAsync(user);
 }
Пример #37
0
 public async Task UpdateAsync(RbacUser user)
 {
     await _userRepository.UpdateAsync(user);
 }