Пример #1
0
        public SyncNuGetVersionTask(
            EventWriter eventWriter, 
            [Import("BinaryVersionManager")] IVersionManager binaryVersionReader)
            : base(eventWriter)
        {
            if (eventWriter == null)
            {
                throw new ArgumentNullException("eventWriter");
            }

            if (binaryVersionReader == null)
            {
                throw new ArgumentNullException("binaryVersionReader");
            }

            BinaryVersionReader = binaryVersionReader;
        }
Пример #2
0
        public JsonResult DeleteServiceGroup(int id)
        {
            DbContextTransaction transaction = null;

            try
            {
                // Start transaction
                transaction = db.Database.BeginTransaction();

                // Get car service group info
                var group = db.CarServiceGroups.Where(r => r.groupId == id).FirstOrDefault();
                if (group != null)
                {
                    // Remove service details
                    var services = db.CarServices.Where(r => r.groupId == group.groupId).ToList();
                    foreach (var service in services)
                    {
                        db.CarServiceDetails.RemoveRange(db.CarServiceDetails.Where(r => r.serviceId == service.serviceId).ToList());
                    }

                    // Remove services
                    db.CarServices.RemoveRange(services);

                    // Remove group
                    db.CarServiceGroups.Remove(group);

                    db.SaveChanges();

                    transaction.Commit();

                    // Success
                    return(Json(new
                    {
                        Success = true,
                        Message = "Xóa nhóm dịch vụ thành công!"
                    }));
                }
                else
                {
                    // Fail
                    return(Json(new
                    {
                        Success = false,
                        Message = "Nhóm dịch vụ #" + id + " không tồn tại trong hệ thống!"
                    }));
                }
            }
            catch (Exception ex)
            {
                // Rollback
                if (transaction != null)
                {
                    transaction.Rollback();
                }

                // Write error logs
                EventWriter.WriteEventLog("SystemController - DeleteCarServiceGroup: " + ex.ToString());

                // Return error
                return(Json(new
                {
                    Success = false,
                    Message = ex.Message
                }));
            }
        }
Пример #3
0
 public void WritePartyMember(PartyMember partyMember, IDataWriter dataWriter)
 {
     WriteCharacter(partyMember, dataWriter);
     EventWriter.WriteEvents(dataWriter, partyMember.Events, partyMember.EventList);
 }
Пример #4
0
        private static void InitializeCodes()
        {
            try
            {
                var       xml  = Contracts.HttpResources.httpstatuscodes;
                XDocument xdoc = XDocument.Parse(xml);
                statusCodes = (from x in xdoc.Descendants("HttpCode")
                               let y = x
                                       select new ApiHttpStatusCode()
                {
                    Code = Int32.Parse(x.Attribute("code").Value),
                    Name = x.Attribute("name").Value,
                    Summary = (x.Attribute("sys.net").Value).Trim(),
                    IsSuccess = Boolean.Parse(x.Attribute("success").Value)
                }).ToList();
            }
            catch (Exception ex)
            {
                string message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                var    props   = eXtensibleConfig.GetProperties();
                EventWriter.WriteError(message, SeverityType.Critical, "Initialization", props);
            }

            string     candidates = ConfigurationManager.AppSettings["api.httpcodes.whitelist"];
            List <int> codes      = new List <int>();

            if (!String.IsNullOrWhiteSpace(candidates))
            {
                string[] t = candidates.Split(new char[] { ',', ';', '.' });
                foreach (var item in t)
                {
                    int j;
                    if (Int32.TryParse(item, out j))
                    {
                        codes.Add(j);
                    }
                }
            }
            else
            {
                codes.Add(200);
                codes.Add(201);
                codes.Add(202);
                codes.Add(400);
                codes.Add(401);
                codes.Add(403);
                codes.Add(404);
                codes.Add(409);
                codes.Add(500);
            }
            _ErrorCodeWhitelist = new List <ApiHttpStatusCode>();
            foreach (var code in statusCodes)
            {
                if (codes.Contains(code.Code))
                {
                    code.IsAvailable = true;
                }
                _ErrorCodeWhitelist.Add(code);
                maps.TryAdd(code.Code, code);
            }
        }
Пример #5
0
        /// <summary>
        /// Pulls down commit data from GitHub and creates events for each commit, which are then streamed to Splunk.
        /// </summary>
        /// <remarks>
        /// This function will be invoked once for each instance of the modular input, though that invocation
        /// may or may not be in separate processes, depending on how the modular input is configured. It should
        /// extract the arguments it needs from <tt>inputDefinition</tt>, then write events to <tt>eventWriter</tt>
        /// (which is thread safe).
        /// </remarks>
        /// <param name="inputDefinition">The definition for this instance of the GitHub input, representing a GitHub repository.</param>
        /// <param name="eventWriter">An object that handles writing events to Splunk.</param>
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            var owner              = ((SingleValueParameter)inputDefinition.Parameters["Owner"]).ToString();
            var repository         = ((SingleValueParameter)inputDefinition.Parameters["Repository"]).ToString();
            var checkpointFilePath = Path.Combine(inputDefinition.CheckpointDirectory, owner + " " + repository + ".txt");

            var productHeader = new ProductHeaderValue("splunk-sdk-csharp-github-commits");
            ObservableGitHubClient client;

            if (!inputDefinition.Parameters.ContainsKey("Token") || String.IsNullOrWhiteSpace(((SingleValueParameter)inputDefinition.Parameters["Token"]).ToString()))
            {
                client = new ObservableGitHubClient(productHeader);
            }
            else
            {
                client = new ObservableGitHubClient(productHeader, new InMemoryCredentialStore(new Credentials(((SingleValueParameter)inputDefinition.Parameters["Token"]).ToString())));
            }

            var shaKeys = new HashSet <string>();

            var    fileReader = new StreamReader(File.Open(checkpointFilePath, System.IO.FileMode.OpenOrCreate));
            string line;

            while (!String.IsNullOrWhiteSpace(line = await fileReader.ReadLineAsync()))
            {
                shaKeys.Add(line);
            }
            fileReader.Close();

            bool done       = false;
            var  fileWriter = new StreamWriter(checkpointFilePath);

            // Use Rx to stream an event for each commit as they come in
            client.Repository.Commits.GetAll(owner, repository).Subscribe(
                async githubCommit =>
            {
                if (!shaKeys.Contains(githubCommit.Sha))
                {
                    await StreamCommit(githubCommit, eventWriter, owner, repository);
                    await fileWriter.WriteLineAsync(githubCommit.Sha);     // Write to the checkpoint file
                    shaKeys.Add(githubCommit.Sha);
                    await eventWriter.LogAsync(Severity.Info, repository + " indexed a Github commit with sha: " + githubCommit.Sha);
                }
            },
                async e =>
            {
                //error handing goes here
                await eventWriter.LogAsync(Severity.Error, e.GetType() + " - " + e.StackTrace);
            },
                () =>
            {
                //completion handling goes here
                fileWriter.Close();
                done = true;
            }
                );

            // Wait for Rx subscribe to finish above
            while (!done)
            {
                await Task.Delay(100);
            }
        }
Пример #6
0
 /// <summary>
 /// Constructor of EventWriteHolder.
 /// </summary>
 /// <param name="level">Level when to trigger the event writer.</param>
 /// <param name="write">Event writer method.</param>
 public EventWriterHolder(EventLevel level, EventWriter write)
 {
     Level = level;
     Write = write;
 }
Пример #7
0
        public JsonResult AddOrderDetails(int orderId, int itemId, int quantity)
        {
            try
            {
                // get order
                var order = db.Orders.Where(r => r.orderId == orderId).FirstOrDefault();
                if (order != null)
                {
                    // get service details
                    var serviceDetails = db.CarServiceDetails.Where(r => r.itemId == itemId).FirstOrDefault();
                    if (serviceDetails != null)
                    {
                        // get service
                        var service = db.CarServices.Where(r => r.serviceId == serviceDetails.serviceId).FirstOrDefault();
                        if (service != null)
                        {
                            // get group
                            var group = db.CarServiceGroups.Where(r => r.groupId == service.groupId).FirstOrDefault();
                            if (group != null)
                            {
                                var orderDetails = new OrderDetails();
                                orderDetails.orderId       = orderId;
                                orderDetails.itemId        = orderId;
                                orderDetails.itemName      = serviceDetails.itemName;
                                orderDetails.serviceId     = service.serviceId;
                                orderDetails.serviceName   = service.serviceName;
                                orderDetails.groupId       = service.groupId;
                                orderDetails.groupName     = group.groupName;
                                orderDetails.unit          = serviceDetails.unit;
                                orderDetails.quantity      = quantity;
                                orderDetails.price         = serviceDetails.price;
                                orderDetails.priceOriginal = serviceDetails.priceOriginal;

                                db.OrderDetails.Add(orderDetails);
                                db.SaveChanges();

                                return(Json(new
                                {
                                    Success = true,
                                    Message = "Thêm chi tiết đơn hàng thành công!"
                                }));
                            }
                            else
                            {
                                return(Json(new
                                {
                                    Success = false,
                                    Message = "Chi tiết dịch vụ không hợp lệ!"
                                }));
                            }
                        }
                        else
                        {
                            return(Json(new
                            {
                                Success = false,
                                Message = "Chi tiết dịch vụ không hợp lệ!"
                            }));
                        }
                    }
                    else
                    {
                        return(Json(new
                        {
                            Success = false,
                            Message = "Không tìm thấy chi tiết dịch vụ!"
                        }));
                    }
                }
                else
                {
                    return(Json(new
                    {
                        Success = false,
                        Message = "Không tìm thấy đơn hàng!"
                    }));
                }
            }
            catch (Exception ex)
            {
                // Write error logs
                EventWriter.WriteEventLog("SaleController - AddOrderDetails: " + ex.ToString());

                // Return error
                return(Json(new
                {
                    Success = false,
                    Message = ex.Message
                }));
            }
        }
Пример #8
0
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="writer">Splunk writer</param>
 /// <param name="stanza">SourceType</param>
 public SplunkWriter(EventWriter writer, string stanza)
 {
     this.Writer = writer;
     this.Stanza = stanza;
 }
Пример #9
0
        /// <summary>
        /// Write events to Splunk from this modular input.
        /// </summary>
        /// <remarks>
        /// This function will be invoked once for each instance of the modular input, though that invocation
        /// may or may not be in separate processes, depending on how the modular input is configured. It should
        /// extract the arguments it needs from <tt>inputDefinition</tt>, then write events to <tt>eventWriter</tt>
        /// (which is thread safe).
        /// </remarks>
        /// <param name="inputDefinition">a specification of this instance of the modular input.</param>
        /// <param name="eventWriter">an object that handles writing events to Splunk.</param>
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            try
            {
                string logfilepath     = ((SingleValueParameter)(inputDefinition.Parameters["logfilepath"])).ToString();
                Int32  maxmessagecount = ((SingleValueParameter)(inputDefinition.Parameters["maxmessagecount"])).ToInt32();
                Int32  cycletime       = ((SingleValueParameter)(inputDefinition.Parameters["cycletime"])).ToInt32();

                //Setup the options input
                OptionsStruct localOptionsStruct = new OptionsStruct();
                localOptionsStruct.LogDirectory = logfilepath;

                // Initialize the log reader
                aaLogReader.aaLogReader logReader = new aaLogReader.aaLogReader(localOptionsStruct);

                // Write an entry to the Splunk system log indicating we have initialized
                await eventWriter.LogAsync(Severity.Info, "Initialized Log reader for path " + logfilepath + " and message count " + maxmessagecount.ToString());

                while (true)
                {
                    await(Task.Delay(cycletime));

                    //Simple call to get all unread records, limiting the return count to max message count
                    List <LogRecord> logRecords = logReader.GetUnreadRecords((ulong)maxmessagecount);

                    // Loop through each lastRecordRead and send to Splunk
                    foreach (LogRecord record in logRecords)
                    {
                        await eventWriter.QueueEventForWriting(new Event
                        {
                            Stanza = inputDefinition.Name,
                            Data   = record.ToKVP()
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                // Eat error message
                await eventWriter.LogAsync(Severity.Error, ex.ToString());
            }
        }
Пример #10
0
        public HttpResponseMessage save([FromBody] JObject json)
        {
            var eventLogs = "";

            // Start transaction
            var dbTrans = db.Database.BeginTransaction();

            try
            {
                eventLogs += "Create order:\r\n" + json.ToString();

                // Create new order
                var order = new Order();
                order.phone    = json.Value <string>("phone") ?? string.Empty;
                order.fullname = json.Value <string>("fullname") ?? string.Empty;
                order.address  = json.Value <string>("address") ?? string.Empty;
                order.amount   = json.Value <decimal?>("amount") ?? 0;
                order.note     = json.Value <string>("note") ?? string.Empty;
                order.status   = (int)Order.Status.STATUS_OPENED;

                var orderDetails = new List <OrderDetails>();
                var services     = json.Value <JArray>("serviceBookings");
                var title        = "";
                foreach (var service in services)
                {
                    var groupId        = service.Value <int>("groupId");
                    var groupName      = service.Value <string>("groupName");
                    var serviceId      = service.Value <int>("serviceId");
                    var serviceName    = service.Value <string>("serviceName");
                    var bookType       = service.Value <int>("bookType");
                    var serviceDetails = service.Value <JArray>("details");
                    foreach (var details in serviceDetails)
                    {
                        var item = new OrderDetails();
                        item.groupId       = groupId;
                        item.groupName     = groupName;
                        item.serviceId     = serviceId;
                        item.serviceName   = serviceName;
                        item.itemId        = details.Value <int>("itemId");
                        item.itemName      = details.Value <string>("itemName");
                        item.unit          = details.Value <string>("unit");
                        item.quantity      = 1;
                        item.price         = details.Value <decimal>("price");
                        item.priceOriginal = details.Value <decimal>("priceOriginal");

                        orderDetails.Add(item);
                    }
                    title += string.IsNullOrWhiteSpace(title) ? serviceName : " + " + serviceName;
                }
                order.title = title;

                // Validate order
                if (string.IsNullOrWhiteSpace(order.phone))
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Đơn hàng không hợp lệ! Số điện thoại không được rỗng"
                    }));
                }
                if (orderDetails.Count() == 0)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Đơn hàng không hợp lệ! Đơn hàng không có thông tin chi tiết"
                    }));
                }

                // Save order info
                db.Orders.Add(order);
                db.SaveChanges();

                // update order details
                var orderId = order.orderId;
                var amount  = (decimal)0.0;
                foreach (var item in orderDetails)
                {
                    item.orderId = orderId;
                    amount      += item.price;
                }
                order.amount = amount;
                db.OrderDetails.AddRange(orderDetails);
                db.SaveChanges();
                dbTrans.Commit();

                // Append event logs
                eventLogs += "OrderController - save: success";

                // Send email
                var receiver     = ConfigurationManager.AppSettings["ADMIN_EMAIL"];
                var receiverName = string.IsNullOrWhiteSpace(order.fullname) ? order.phone : order.fullname;
                var subject      = "Đặt hàng thành công";
                var body         = "";

                body += "<strong>Kính chào quí khách " + receiverName + ",</strong><br />";
                body += "<p>L.M.W vừa nhận được đơn hàng <strong>#" + order.orderId + "</strong> của quí khách đặt ngày " + order.date.ToString("dd/MM/yyyy HH:mm") + " ";
                body += "với hình thức thanh toán <strong>Cash On Delivery (COD)</strong>.</p><br />";
                body += "<p><strong>Sau đây là thông tin chi tiết đơn hàng:</strong></p><br />";
                body += "<p>Đơn hàng: " + order.orderId + "</p><br />";
                body += "<p>Điện thoại: " + order.phone + "</p><br />";
                body += "<p>Địa chỉ: " + order.address + "</p><br /><br />";
                body += "<table><tr><th nowrap>STT</th><th nowrap>Tên</th><th nowrap>ĐVT</th><th nowrap>Số lượng</th><th nowrap>Giá</th><th nowrap>Thành tiền</th></tr>";
                var count = 0;
                foreach (var item in orderDetails)
                {
                    count++;
                    body += "<tr>";
                    body += "<td nowrap>" + count + "</td>";
                    body += "<td nowrap>" + item.itemName + "</td>";
                    body += "<td nowrap>" + item.unit + "</td>";
                    body += "<td align='right' nowrap>" + item.quantity + "</td>";
                    body += "<td align='right' nowrap>" + item.price.ToString("#,###") + "</td>";
                    body += "<td align='right' nowrap>" + (item.quantity * item.price).ToString("#,###") + "</td>";
                    body += "</tr>";
                }
                body += "<tr><td colspan='5'><strong>Số tiền tạm tính:</strong></td><td align='right'><strong>" + order.amount.ToString("#,###") + "</strong></td></tr>";
                body += "</table><br />";
                body += "<p>Cám ơn quí khác đã sử dụng dịch vụ của chúng tôi!</p>";
                body += "<p><strong>L.M.W</strong></p>";

                Emailer.sendMail(receiver, receiverName, subject, body);

                // return service groups
                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = true,
                    Data = "Lưu đơn hàng thành công!"
                }));
            }
            catch (Exception ex)
            {
                // Rollback transaction
                dbTrans.Rollback();

                eventLogs = "OrderController - save: " + ex.ToString();

                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = false,
                    Data = ex.ToString()
                }));
            }
            finally
            {
                // write event logs
                if (string.IsNullOrWhiteSpace(eventLogs) == false)
                {
                    EventWriter.WriteEventLog(eventLogs);
                }
            }
        }
Пример #11
0
 public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
 {
     await eventWriter.QueueEventForWriting(new Event
     {
         Data = "Boris!"
     });
 }
Пример #12
0
        public ActionResult SignIn(SignInModel model)
        {
            var eventLogs = "";

            try
            {
                if (ModelState.IsValid)
                {
                    eventLogs += "Login, user:"******", success";

                            return(RedirectToAction("Index", "Admin"));
                        }
                        else
                        {
                            eventLogs += ", fail, wrong password";

                            ModelState.AddModelError("", "Sai mật khẩu");
                        }
                    }
                    else
                    {
                        eventLogs += ", fail, invalid user";

                        ModelState.AddModelError("", "Sai tên tài khoản");
                    }
                }
            }
            catch (Exception ex)
            {
                // set error
                ModelState.AddModelError("", ex.Message);

                // write error log
                eventLogs += "error: " + ex.Message;
            }
            finally
            {
                // Write event log
                if (!string.IsNullOrWhiteSpace(eventLogs))
                {
                    EventWriter.WriteEventLog(eventLogs);
                }
            }

            return(View(model));
        }
Пример #13
0
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            int interval = 1000;

            try
            {
                // if user didn't give value for polling_interval, type conversion to SingleValueParameter will throw
                interval = int.Parse(((SingleValueParameter)inputDefinition.Parameters["polling_interval"]).ToString());
            }
            catch (Exception)
            {
            }

            const string Seperator = @"://";
            int          index     = inputDefinition.Name.IndexOf(Seperator) + Seperator.Length;
            string       varName   = inputDefinition.Name.Substring(index);

            string lastVarValue = null;

            while (true)
            {
                await Task.Delay(interval);

                string varValue = Environment.GetEnvironmentVariable(varName, EnvironmentVariableTarget.Machine);
                // Event data can't be null for real events.
                varValue = varValue ?? "(not exist)";
                // Splunk does not record lines with only white spaces.
                varValue = string.IsNullOrWhiteSpace(varValue) ? "(white space)" : varValue;

                if (varValue != lastVarValue)
                {
                    await eventWriter.QueueEventForWriting(new Event
                    {
                        Stanza = varName,
                        Data   = string.Format("{0}, interval={1}, inputDefinition.Name={2} , varName={3}",
                                               varValue, interval, inputDefinition.Name, varName)
                    });

                    lastVarValue = varValue;
                }
            }
        }
Пример #14
0
 protected UserScriptBase() {
   console = new EventWriter(this);
 }
 public override Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
 {
     Executed = true;
     return(Task.FromResult(false));
 }
 public override Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
 {
     Executed = true;
     return Task.FromResult(false);
 }
Пример #17
0
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            double min = ((SingleValueParameter)inputDefinition.Parameters["min"]).ToDouble();
            double max = ((SingleValueParameter)inputDefinition.Parameters["max"]).ToDouble();

            while (true)
            {
                await Task.Delay(100);

                await eventWriter.QueueEventForWriting(new Event
                {
                    Stanza = inputDefinition.Name,
                    Data   = "number=" + (rnd.NextDouble() * (max - min) + min)
                });
            }
        }
Пример #18
0
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            #region Get param values

            string streamName = inputDefinition.Name;
            await eventWriter.LogAsync(Severity.Info, string.Format("Name of Stanza is : {0}", inputDefinition.Name));

            string reportName = await GetConfigurationValue(inputDefinition, ConstantReportName, eventWriter);

            string emailAddress = await GetConfigurationValue(inputDefinition, ConstantEmailAddress, eventWriter);

            string password = await GetConfigurationValue(inputDefinition, ConstantPassword, eventWriter, false);

            string start = await GetConfigurationValue(inputDefinition, ConstantStartDate, eventWriter);

            DateTime startDateTime = start.TryParseDateTime(DateTime.MinValue);
            string   end           = await GetConfigurationValue(inputDefinition, ConstantEndDate, eventWriter);

            DateTime endDateTime = end.TryParseDateTime(DateTime.MinValue);

            #endregion Get param values

            ReportingContext context = new ReportingContext();
            context.UserName     = emailAddress;
            context.Password     = password;
            context.FromDateTime = startDateTime;
            context.ToDateTime   = endDateTime;
            context.SetLogger(new SplunkTraceLogger(eventWriter));

            IReportVisitor visitor = new SplunkReportVisitor(streamName, eventWriter);

            while (true)
            {
                await Task.Delay(1000);

                ReportingStream stream = new ReportingStream(context, reportName, streamName);
                stream.RetrieveData(visitor);
            }
        }
        private IModelDataGateway <T> ResolveImplementor <T>(ModelActionOption option, IContext context, T t, ICriterion criterion) where T : class, new()
        {
            IModelDataGateway <T> implementor = null;

            Type type = _TypeCache.ResolveType <T>();

            if (type == null)
            {
                // if not, create one and add the model.  then add sproc based if exists, otherwise add inline on appcontext-model by appcontext-model basis;
                if (_DbConfigs.Contains(context.ApplicationContextKey))
                {
                    var    modelType = typeof(T);
                    string modelKey  = modelType.FullName;
                    var    found     = _DbConfigs[context.ApplicationContextKey].Models.Find(x => x.Key.Equals(modelKey));
                    if (found == null)
                    {
                        XF.Common.Db.Model model = new Common.Db.Model()
                        {
                            Key = modelKey, modelType = modelType.AssemblyQualifiedName, ModelActions = new List <Common.Db.ModelAction>(), Commands = new List <Common.Db.DbCommand>(), DataMaps = new List <Common.Db.DataMap>()
                        };
                        _DbConfigs[context.ApplicationContextKey].Models.Add(model);
                        found = _DbConfigs[context.ApplicationContextKey].Models.Find(x => x.Key.Equals(modelKey));
                    }
                    if (found != null)
                    {
                        implementor = new ConfigModelDataGateway <T>(found);
                    }
                    else
                    {
                    }
                }
                else if (eXtensibleConfig.Infer)
                {
                    implementor = new GenericModelDataGateway <T>();
                }

                //if (implementor == null)
                //{
                //    var message = Exceptions.ComposeImplementorResolutionError<T>(option, t, context);
                //    context.SetError(500, message.ToPublish());
                //    EventWriter.WriteError(message.ToLog(), SeverityType.Error);
                //}
            }
            else
            {
                implementor = Activator.CreateInstance(type) as IModelDataGateway <T>;
            }
            if (implementor == null)
            {
                if (type != null)
                {
                    var message = Exceptions.ComposeImplementorInstantiationError <T>(option, t, context, type.FullName);
                    context.SetError(500, message.ToPublish());
                    var props = eXtensibleConfig.GetProperties();
                    props.Add(XFConstants.Context.Ticket, message.Id);
                    EventWriter.WriteError(message.ToLog(), SeverityType.Error, XFConstants.Category.DataAccess, props);
                }
                else
                {
                    var message = Exceptions.ComposeImplementorResolutionError <T>(option, t, context);
                    context.SetError(500, message.ToPublish());
                    var props = eXtensibleConfig.GetProperties();
                    props.Add(XFConstants.Context.Ticket, message.Id);
                    EventWriter.WriteError(message.ToLog(), SeverityType.Error, XFConstants.Category.DataAccess, props);
                }
            }
            else
            {
                if (eXtensibleConfig.Inform)
                {
                    EventWriter.Inform(String.Format("MDG selected: {0}", implementor.GetType().FullName));
                }

                implementor.DataService = this as IDatastoreService;
                implementor.Context     = context;

                ICacheable <T> cacheable = implementor as ICacheable <T>;
                if (cacheable != null)
                {
                    cacheable.Cache = Cache;
                }
                // TODO, outsource this
                IModelDataGatewayInitializeable initializable = implementor as IModelDataGatewayInitializeable;
                if (initializable != null)
                {
                    initializable.Initialize <T>(option, context, t, criterion, ResolveDbKey <T>);
                }
            }

            return(implementor);
        }
Пример #20
0
        private async Task <string> GetConfigurationValue(InputDefinition definition, string keyName, EventWriter writer, bool log = true)
        {
            Parameter parameter;

            if (definition.Parameters.TryGetValue(keyName, out parameter))
            {
                await writer.LogAsync(Severity.Info, string.Format("Value for [{0}] retrieved successfully: {1}", keyName, log ? parameter.ToString() : "# Value not logged #"));

                return(parameter.ToString());
            }
            else
            {
                return(null);
            }
        }
Пример #21
0
        public ActionResult ListOrders(string date1, string date2, string filter = "", int status = 0, int page = 1)
        {
            try
            {
                // Validate page
                page = page > 0 ? page : 1;

                // Get default pagesize
                var pageSize = int.Parse(ConfigurationManager.AppSettings["PAGE_SIZE"]);

                // Get search date range
                var provider = CultureInfo.InvariantCulture;
                var d1       = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                var d2       = DateTime.Now;
                if (!String.IsNullOrWhiteSpace(date1) && !String.IsNullOrWhiteSpace(date2))
                {
                    DateTime.TryParseExact(date1, "dd/MM/yyyy", provider, DateTimeStyles.None, out d1);
                    DateTime.TryParseExact(date2 + " 23:59:59", "dd/MM/yyyy HH:mm:ss", provider, DateTimeStyles.None, out d2);
                }

                // Query data
                var pDate1     = new SqlParameter("date1", d1);
                var pDate2     = new SqlParameter("date2", d2);
                var pFilter    = new SqlParameter("filter", filter);
                var pStatus    = new SqlParameter("status", status);
                var pPageIndex = new SqlParameter("pageIndex", page);
                var pPageSize  = new SqlParameter("pageSize", pageSize);
                var pItemCount = new SqlParameter("itemCount", System.Data.SqlDbType.Int, 4);

                pPageIndex.Direction = System.Data.ParameterDirection.InputOutput;
                pItemCount.Direction = System.Data.ParameterDirection.Output;

                var orders = db.Database.SqlQuery <Order>(@"EXEC [dbo].[usp_searchOrders]
                            @date1,
                            @date2,
                            @filter, 
                            @status, 
                            @pageIndex OUT, 
                            @pageSize, 
                            @itemCount OUT",
                                                          pDate1,
                                                          pDate2,
                                                          pFilter,
                                                          pStatus,
                                                          pPageIndex,
                                                          pPageSize,
                                                          pItemCount).ToList();

                // Create view model
                var totalItems    = (int)pItemCount.Value;
                var pager         = new Pager(totalItems, (int)pPageIndex.Value, pageSize);
                var statusOptions = new SelectListItem[]
                {
                    new SelectListItem {
                        Value = "0", Text = "--Tất cả--", Selected = (status == 0)
                    },
                    new SelectListItem {
                        Value = "1", Text = "Đang Mở", Selected = (status == (int)Order.Status.STATUS_OPENED)
                    },
                    new SelectListItem {
                        Value = "2", Text = "Đã tiếp nhận", Selected = (status == (int)Order.Status.STATUS_PENDIND)
                    },
                    new SelectListItem {
                        Value = "3", Text = "Đang xử lý lý", Selected = (status == (int)Order.Status.STATUS_PROCESSING)
                    },
                    new SelectListItem {
                        Value = "4", Text = "Hoàn tất", Selected = (status == (int)Order.Status.STATUS_FINISHED)
                    },
                    new SelectListItem {
                        Value = "5", Text = "Đã đóng", Selected = (status == (int)Order.Status.STATUS_CLOSED)
                    }
                };
                var model = new ListOrderModel
                {
                    Date1         = d1,
                    Date2         = d2,
                    Filter        = filter,
                    Status        = status,
                    StatusOptions = statusOptions,
                    Items         = orders,
                    Pager         = pager
                };

                return(View(model));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.ToString());

                EventWriter.WriteEventLog("SaleController - ListOrders: " + ex.ToString());
            }
            return(View());
        }
Пример #22
0
        /// <summary>
        /// Splunk callback use to launch the plugin
        /// </summary>
        /// <param name="inputDefinition">Retrieve the config set into inputs.conf</param>
        /// <param name="eventWriter">event writer use to communicate with splunk</param>
        /// <returns></returns>
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            var splunkHome = Environment.GetEnvironmentVariable("SPLUNK_HOME");
            var profile    = inputDefinition.Name.Split(new string[] { "://" }, StringSplitOptions.RemoveEmptyEntries)[1];
            await eventWriter.LogAsync(Severity.Info, "Splunk-ETW select " + profile + " profile");

            string iniPath = Path.Combine(new string[] { splunkHome, "etc", "apps", "Splunk-ETW", "profile", profile + ".ini" });
            await eventWriter.LogAsync(Severity.Info, "Splunk-ETW load " + iniPath);

            try
            {
                var trace = TraceManager.BuildFromConfig(new FileIniDataParser().ReadFile(iniPath), new SplunkWriter(eventWriter, inputDefinition.Name));
                await Task.Run(() => trace.Start());
            }
            catch (Exception e)
            {
                await eventWriter.LogAsync(Severity.Error, e.ToString());
            }
        }
Пример #23
0
        protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            HttpResponseMessage errorMessage = null;

            Guid xfId = Guid.Empty;

            var principal = CreateClaimsPrincipal();
            eXtensibleClaimsPrincipal exPrincipal = principal as eXtensibleClaimsPrincipal;

            if (exPrincipal != null)
            {
                exPrincipal.Start(request);
            }

            Thread.CurrentPrincipal = exPrincipal;
            var currentContext = System.Web.HttpContext.Current;

            if (currentContext != null)
            {
                currentContext.User = exPrincipal;
            }


            HttpResponseMessage resultMessage = null;

            try
            {
                resultMessage = ((errorMessage != null) ? errorMessage : await base.SendAsync(request, cancellationToken));
            }
            catch (Exception ex)
            {
                string message = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                var    props   = eXtensibleConfig.GetProperties();
                EventWriter.WriteError(message, SeverityType.Critical, "api.routing", props);
                request.GenerateErrorResponse(HttpStatusCode.NotFound, "resource not found");
            }

            // now perform any required profiling
            if (exPrincipal != null)
            {
                exPrincipal.Stop(request);

                var d = exPrincipal.Items.ToDictionary().Merge(eXtensibleConfig.GetProperties());

                HttpStatusCode statuscode = resultMessage.StatusCode;
                var            reason     = resultMessage.ReasonPhrase;

                if (!resultMessage.IsSuccessStatusCode)
                {
                    if (!d.ContainsKey("xf-id"))
                    {
                        xfId = Guid.NewGuid();
                        d.Add("xf-id", xfId);
                    }
                    else
                    {
                        object o = d["xf-id"];
                        if (o != null && o is Guid)
                        {
                            xfId = (Guid)o;
                        }
                    }

                    if (((HttpContent)resultMessage.Content).GetType().GetGenericArguments()[0].Name.Equals("HttpError"))
                    {
                        var httpError = ((ObjectContent <HttpError>)resultMessage.Content).Value as HttpError;
                        if (httpError != null)
                        {
                            if (httpError.ContainsKey("message"))
                            {
                                reason = httpError["message"].ToString();
                            }

                            if (errorCodeMapsReverse.ContainsKey(resultMessage.StatusCode.ToString()))
                            {
                                int code = errorCodeMapsReverse[resultMessage.StatusCode.ToString()];
                                if (d.ContainsKey("xf-request.response.status-code"))
                                {
                                    d["xf-request.response.status-code"] = code.ToString();
                                }
                                else
                                {
                                    d.Add("xf-request.response.status-code", code.ToString());
                                }
                            }
                            if (d.ContainsKey("xf-request.response.status-description"))
                            {
                                d["xf-request.response.status-description"] = reason;
                            }
                            else
                            {
                                d.Add("xf-request.response.status-description", reason);
                            }
                        }
                    }
                    else
                    {
                    }
                }
                else
                {
                    string responsemessage = resultMessage.StatusCode.ToString();
                    int    code            = (int)resultMessage.StatusCode;
                    if (d.ContainsKey("xf-request.response.status-code"))
                    {
                        d["xf-request.response.status-code"] = code.ToString();
                    }
                    else
                    {
                        d.Add("xf-request.response.status-code", code.ToString());
                    }

                    if (d.ContainsKey("xf-request.response.status-description"))
                    {
                        d["xf-request.response.status-description"] = responsemessage;
                    }
                    else
                    {
                        d.Add("xf-request.response.status-description", responsemessage);
                    }
                }

                d.Add("api.extensible.list", "xf.api.request");

                string basicToken;
                string bearerToken;
                if (!d.ContainsKey("xf-request.message.basic-token") && exPrincipal.Identity.TryGetValue <string>("source", out basicToken))
                {
                    d.Add("xf-request.message.basic-token", basicToken);
                }
                if (!d.ContainsKey("xf-request.message.bearer-token") && exPrincipal.Identity.TryGetValue <string>(ClaimTypes.Authentication, out bearerToken))
                {
                    d.Add("xf-request.message.bearer-token", bearerToken);
                }
                bool b = false;
                if (eXtensibleWebApiConfig.LoggingMode.Equals(LoggingModeOption.All))
                {
                    b = true;
                }
                else if (eXtensibleWebApiConfig.LoggingMode.Equals(LoggingModeOption.Sparse) && exPrincipal != null)
                {
                    b = exPrincipal.HasError;
                }

                if (b)
                {
                    Writer.Invoke(d);
                }
            }

            resultMessage.Headers.Add(eXtensibleWebApiConfig.MessageIdHeaderKey, xfId.ToString());

            return(resultMessage);
        }
Пример #24
0
 public SVMFeatureExtractor(string sourceFilePath, string desFilePath, bool HasHead = false)
 {
     reader    = new EventReaderByLine(sourceFilePath, HasHead);
     writer    = new EventWriterByLine(desFilePath);
     extractor = new SVMFeature();
 }
 public MaxEntFeatureExtractor(string sourceFilePath, string desFilePath)
 {
     reader    = new EventReaderByLine(sourceFilePath);
     writer    = new EventWriterByLine(desFilePath);
     extractor = new MaxEntFeature();
 }
Пример #26
0
        public HttpResponseMessage verify([FromBody] JObject json)
        {
            var eventLogs = "";

            try
            {
                /**
                 * Description
                 * Input
                 * + phone: Số điện thoai khách hàng
                 * + password: Địa chỉ email khách hàng
                 *
                 * Output
                 * + Thông tin customer
                 * */

                // Get requested params
                var phone    = (json.GetValue("phone").Value <string>() ?? "").Trim();
                var password = (json.GetValue("password").Value <string>() ?? "").Trim();

                var customer = db.Database.SqlQuery <Customer>("EXEC [dbo].[usp_getCustomer] @phone",
                                                               new SqlParameter("phone", phone)).FirstOrDefault();
                if (customer != null)
                {
                    // Verify password
                    var success = SaltedHash.Verify(customer.salt, customer.password, password);
                    if (success)
                    {
                        // set event logs
                        eventLogs += "Login phone number = " + phone + " success";

                        return(Request.CreateResponse(HttpStatusCode.OK, new
                        {
                            Success = true,
                            Data = new {
                                phone = customer.phone,
                                fullname = customer.fullname,
                                email = customer.email,
                                address = customer.address
                            }
                        }));
                    }
                    else
                    {
                        // set event logs
                        eventLogs += "Login phone number = " + phone + " fail, wrong password";

                        return(Request.CreateResponse(HttpStatusCode.OK, new
                        {
                            Success = false,
                            Data = "Đăng nhập thất bại! Vui lòng kiểm tra lại mật khẩu"
                        }));
                    }
                }
                else
                {
                    // set event logs
                    eventLogs += "Login phone number = " + phone + " fail, wrong phone number";

                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Đăng nhập thất bại! Số điện thoại chưa được đăng ký"
                    }));
                }
            }
            catch (Exception ex)
            {
                // set event logs
                eventLogs = "CustomerController - verify: " + ex.ToString();

                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = false,
                    Data = ex.ToString()
                }));
            }
            finally
            {
                // write event logs
                if (string.IsNullOrWhiteSpace(eventLogs) == false)
                {
                    EventWriter.WriteEventLog(eventLogs);
                }
            }
        }
Пример #27
0
 /// <summary>
 /// Class constructor. INTERNAL USE ONLY.
 /// </summary>
 internal EventScope(EventWriter writer)
 {
     Writer = writer;
 }
Пример #28
0
        public HttpResponseMessage changePassword([FromBody] JObject json)
        {
            var eventLogs = "";

            try
            {
                /**
                 * Description
                 * Input
                 * + phone: Số điện thoai khách hàng
                 * + passwordCurrent: Mật khẩu hiện tại
                 * + password: Mật khẩu mới
                 *
                 * Output
                 * + Success: true/false
                 * + Data: Mô tả kết quả trả về
                 * */

                // Get requested params
                var phone           = (json.GetValue("phone").Value <string>() ?? "").Trim();
                var passwordCurrent = (json.GetValue("passwordCurrent").Value <string>() ?? "").Trim();
                var password        = (json.GetValue("password").Value <string>() ?? "").Trim();

                var customer = db.Customers.Where(r => r.phone.Equals(phone)).FirstOrDefault();
                if (customer != null)
                {
                    // Verify password
                    var success = SaltedHash.Verify(customer.salt, customer.password, passwordCurrent);
                    if (success)
                    {
                        // Assign new password
                        var sh = new SaltedHash(password);
                        customer.salt     = sh.Salt;
                        customer.password = sh.Hash;
                        db.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, new
                        {
                            Success = true,
                            Data = "Đổi mật khẩu thành công!"
                        }));
                    }
                    else
                    {
                        // Wrong password
                        return(Request.CreateResponse(HttpStatusCode.OK, new
                        {
                            Success = false,
                            Data = "Đổi mật khẩu thất bại! Mật khẩu hiện tại không đúng"
                        }));
                    }
                }
                else
                {
                    // Customer not found
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Đổi mật khẩu thất bại! Khách hàng #" + phone + " không tồn tại trong hệ thống!"
                    }));
                }
            }
            catch (Exception ex)
            {
                // set event logs
                eventLogs = "CustomerController - changePassword: " + ex.ToString();

                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = false,
                    Data = ex.ToString()
                }));
            }
            finally
            {
                // write event logs
                if (string.IsNullOrWhiteSpace(eventLogs) == false)
                {
                    EventWriter.WriteEventLog(eventLogs);
                }
            }
        }
Пример #29
0
 protected CSharpScriptBase()
 {
     console = new EventWriter(this);
 }
Пример #30
0
        public HttpResponseMessage register([FromBody] JObject json)
        {
            var eventLogs = "";

            try
            {
                /**
                 * Description
                 *
                 * Input:
                 * + phone: Số điện thoai khách hàng
                 * + email: Địa chỉ email khách hàng
                 * + address: Địa chỉ khách hàng
                 *
                 * Return:
                 * + ReturnCode: 0 thành công (#0 mã lỗi)
                 * + ReturnMessage: thông báo trả về
                 *
                 * */

                // Get requested params
                var phone    = (json.GetValue("phone").Value <string>() ?? "").Trim();
                var password = (json.GetValue("password").Value <string>() ?? "").Trim();
                var fullname = (json.GetValue("fullname").Value <string>() ?? "").Trim();
                var email    = (json.GetValue("email").Value <string>() ?? "").Trim();

                // Validate customer info
                if (string.IsNullOrWhiteSpace(phone))
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Số điện thoại không được rỗng!"
                    }));
                }

                if (password.Length < 6)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Độ dài mật khẩu tối thiểu 6 ký tự!"
                    }));
                }

                // Hash password
                SaltedHash sh   = new SaltedHash(password);
                var        hash = sh.Hash;
                var        salt = sh.Salt;

                // Save customer info
                var regCustResult = db.Database.SqlQuery <RegisterCustomerResult>(@"EXEC [dbo].[usp_registerCustomer] 
                                    @phone, 
                                    @password, 
                                    @salt, 
                                    @fullname,
                                    @email",
                                                                                  new SqlParameter("phone", phone),
                                                                                  new SqlParameter("password", hash),
                                                                                  new SqlParameter("salt", salt),
                                                                                  new SqlParameter("fullname", fullname),
                                                                                  new SqlParameter("email", email))
                                    .FirstOrDefault();

                if (regCustResult != null)
                {
                    var success = (regCustResult.ReturnCode == 0);

                    // set event logs
                    eventLogs =
                        "Customer controller - register: \r\n" + json.ToString() +
                        "\r\nReturnCode: " + regCustResult.ReturnCode +
                        "\r\nReturnMessage" + regCustResult.ReturnMessage;

                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = success,
                        Data = regCustResult.ReturnMessage
                    }));
                }
                else
                {
                    // set event logs
                    eventLogs =
                        "Customer controller - register: \r\n" + json.ToString() +
                        "\r\nReturnMessage: Đăng ký tài khoản thất bại! Có lỗi xảy ra trong quá trình đăng ký tài khoản";

                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Đăng ký tài khoản thất bại! Có lỗi xảy ra trong quá trình đăng ký tài khoản"
                    }));
                }
            }
            catch (Exception ex)
            {
                // set event logs
                eventLogs = "CustomerController - register: " + ex.ToString();

                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = false,
                    Data = ex.ToString()
                }));
            }
            finally
            {
                // write event logs
                if (string.IsNullOrWhiteSpace(eventLogs) == false)
                {
                    EventWriter.WriteEventLog(eventLogs);
                }
            }
        }
Пример #31
0
        public ActionResult ListServiceDetails(string filter, int?serviceId, int?page)
        {
            filter    = filter ?? "";
            serviceId = serviceId ?? 0;
            page      = page ?? 1;
            try
            {
                // Get service info
                var service = db.CarServices.Where(r => r.serviceId == serviceId).FirstOrDefault();
                if (service != null)
                {
                    var group = db.CarServiceGroups.Where(r => r.groupId == service.groupId).FirstOrDefault();
                    if (group != null)
                    {
                        // Get default pagesize
                        var pageSize = int.Parse(ConfigurationManager.AppSettings["PAGE_SIZE"]);

                        // Search service details
                        var pFilter    = new SqlParameter("filter", filter);
                        var pServiceId = new SqlParameter("serviceId", serviceId);
                        var pPageIndex = new SqlParameter("pageIndex", page);
                        var pPageSize  = new SqlParameter("pageSize", pageSize);
                        var pItemCount = new SqlParameter("itemCount", System.Data.SqlDbType.Int, 4);
                        pPageIndex.Direction = System.Data.ParameterDirection.InputOutput;
                        pItemCount.Direction = System.Data.ParameterDirection.Output;
                        var serviceDetails = db.Database.SqlQuery <CarServiceDetails>(@"EXEC [dbo].[usp_searchCarServiceDetails]  
                                                                            @filter, 
                                                                            @serviceId, 
                                                                            @pageIndex OUT, 
                                                                            @pageSize, 
                                                                            @itemCount OUT",
                                                                                      pFilter,
                                                                                      pServiceId,
                                                                                      pPageIndex,
                                                                                      pPageSize,
                                                                                      pItemCount).ToList();

                        // Generate service group options
                        var totalItems = (int)pItemCount.Value;
                        var pager      = new Pager(totalItems, (int)pPageIndex.Value, pageSize);

                        // Return view model
                        var model = new ListServiceDetailsModel
                        {
                            Filter      = filter,
                            groupId     = group.groupId,
                            groupName   = group.groupName,
                            serviceId   = service.serviceId,
                            serviceName = service.serviceName,
                            Items       = serviceDetails,
                            Pager       = pager
                        };
                        return(View(model));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Dịch vụ #" + service.serviceName + " không thuộc nhóm nào!");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Không tìm thấy dịch vụ #" + serviceId + "!");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.ToString());

                EventWriter.WriteEventLog("SystemController - ListServices: " + ex.ToString());
            }

            return(View());
        }
Пример #32
0
        public HttpResponseMessage recoveryPassword([FromBody] JObject json)
        {
            var eventLogs = "";

            try
            {
                /**
                 * Description
                 * Input
                 * + phone: Số điện thoai khách hàng
                 * + email: Địa chỉ email
                 *
                 * Output
                 * + Thông tin customer
                 * */

                // Get requested params
                var phone = (json.GetValue("phone").Value <string>() ?? "").Trim();
                var email = (json.GetValue("email").Value <string>() ?? "").Trim();

                // Get customer
                var customer = db.Customers.Where(c => c.phone == phone).FirstOrDefault();
                if (customer != null && !string.IsNullOrWhiteSpace(customer.email))
                {
                    // Validate user email
                    if (String.Compare(customer.email, email, true) == 0)
                    {
                        // create random password
                        String     newpass = Membership.GeneratePassword(6, 0);
                        SaltedHash sh      = new SaltedHash(newpass);
                        customer.salt     = sh.Salt;
                        customer.password = sh.Hash;
                        db.SaveChanges();

                        // email new password to user
                        string subject = "Khôi phục mật khẩu tài khoản";
                        string body    = "<p><strong>Kính chào quý khách, </strong></p>";
                        body += "<p>Quý khách nhận được email này từ L.M.W vì quý khách hoặc ai đó đã có yêu cầu khôi phục mật khẩu tài khoản.</p>";
                        body += "<br />";
                        body += "<p>Sau đây là thông tin đăng nhập mới của bạn:</p>";
                        body += "<p>Tài khoản: <strong>" + phone + "</strong></p>";
                        body += "<p>Mật khẩu: <strong>" + newpass + "</strong></p>";
                        body += "<br />";
                        body += "<p>Bạn vui lòng đăng nhập lại ứng dụng với mật khẩu mới.</p>";
                        body += "<p>Chúc bạn một ngày tốt lành!</p>";
                        body += "<p>L.M.W</p>";
                        Emailer.sendMail(customer.email, customer.fullname, subject, body);

                        return(Request.CreateResponse(HttpStatusCode.OK, new
                        {
                            Success = true,
                            Data = "Khôi phục mật khẩu thành công!\r\nVui lòng kiểm tra email: " + customer.email + " để nhận mật khẩu mới"
                        }));
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK, new
                        {
                            Success = false,
                            Data = "Khôi phục mật khẩu thất bại! Địa chỉ email không khớp với địa chỉ email đã đăng ký. Vui lòng liên hệ email về [email protected] để được hỗ trợ!"
                        }));
                    }
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        Success = false,
                        Data = "Khôi phục mật khẩu thất bại! Khách hàng #" + phone + " không tồn tại trong hệ thống. Vui lòng liên hệ email [email protected] để được hỗ trợ!"
                    }));
                }
            }
            catch (Exception ex)
            {
                // set event logs
                eventLogs = "CustomerController - recoveryPassword: " + ex.ToString();

                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    Success = false,
                    Data = ex.ToString()
                }));
            }
            finally
            {
                // write event logs
                if (string.IsNullOrWhiteSpace(eventLogs) == false)
                {
                    EventWriter.WriteEventLog(eventLogs);
                }
            }
        }
Пример #33
0
 protected CSharpScriptBase() {
   console = new EventWriter(this);
 }
            public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
            {
                var min = ((SingleValueParameter)inputDefinition.Parameters["min"]).ToDouble();

                if (min == 1)
                {
                    throw new InvalidOperationException();
                }

                await eventWriter.QueueEventForWriting(new Event
                {
                    Data = "Boris!"
                });
            }