public static byte[] DownloadItemById(int itemId)
    {
        var da = new DataAccess();
        CorrespondenceItem returnValue = da.GetActionCorrespondenceItem(itemId);

        return(returnValue.ContentArray);
    }
    public static string OpenItemById(int itemId)
    {
        var da = new DataAccess();
        CorrespondenceItem returnValue = da.GetActionCorrespondenceItem(itemId);

        return(returnValue.ContentText);
    }
Example #3
0
        public static Item Initiate(DataContext dataContext, string internalReference, ICorrespondent source, ICorrespondent target, Router router, IPayload payload, bool wait = true)
        {
            if (source == null)
            {
                throw new Exception("source argument can not be null.");
            }

            if (target == null)
            {
                throw new Exception("target argument can not be null.");
            }

            if (payload == null)
            {
                throw new Exception("payload argument can not be null.");
            }

            if (router == null)
            {
                router = Router.GetRoute(source, target, payload.CorrespondenceType);
            }

            if (router == null)
            {
                throw new Exception("Unable to compute route for correspondence item.");
            }

            CorrespondenceItem correspondenceItem = new CorrespondenceItem();

            correspondenceItem.Context            = payload.CorrespondenceContext;
            correspondenceItem.CorrespondenceType = payload.CorrespondenceType;
            correspondenceItem.CreatedTimestamp   = DateTime.Now;
            correspondenceItem.Status             = CorrespondenceItemStatus.Created;
            correspondenceItem.StatusTimestamp    = correspondenceItem.CreatedTimestamp;
            correspondenceItem.TargetEntityID     = target.ID;
            correspondenceItem.TargetEntityType   = GetEntityType(target);
            correspondenceItem.SourceEntityID     = source.ID;
            correspondenceItem.SourceEntityType   = GetEntityType(source);
            correspondenceItem.SubType            = payload.SubType;
            correspondenceItem.InternalReference  = internalReference;
            correspondenceItem.Value = "RFU";
            dataContext.CorrespondenceItems.Add(correspondenceItem);

            CorrespondenceRoute correspondenceRoute = new CorrespondenceRoute();

            correspondenceRoute.Source             = router.Source;
            correspondenceRoute.Target             = router.Target;
            correspondenceRoute.CorrespondenceItem = correspondenceItem;
            dataContext.CorrespondenceRoutes.Add(correspondenceRoute);

            if (payload.CorrespondenceType == CorrespondenceType.Email)
            {
                // TODO
            }
            else if (payload.CorrespondenceType == CorrespondenceType.Sms)
            {
                if (!(payload is SmsPayload))
                {
                    throw new Exception("Expected sms payload.");
                }

                CorrespondenceSmsPayload correspondenceSmsPayload = new CorrespondenceSmsPayload();
                correspondenceSmsPayload.CorrespondenceItem = correspondenceItem;
                correspondenceSmsPayload.Message            = ((SmsPayload)payload).Message;
                dataContext.CorrespondenceSmsPayloads.Add(correspondenceSmsPayload);
            }

            dataContext.SaveChanges();

            Processor.Process(correspondenceItem.ID, wait);

            return(new Item(correspondenceItem.InternalReference, source, target, correspondenceRoute, payload));
        }
Example #4
0
        internal void ProcessSmsMock(DataContext dataContext, MockSmsSettings settings, CorrespondenceItem correspondenceItem)
        {
            try
            {
                Thread.Sleep(settings.Delay);

                correspondenceItem.Status          = CorrespondenceItemStatus.Dispatched;
                correspondenceItem.StatusTimestamp = DateTime.Now;
                dataContext.SaveChanges();
            }
            catch (Exception ex)
            {
                Logger.Error(ex);

                correspondenceItem.Status          = CorrespondenceItemStatus.FailedToDispatch;
                correspondenceItem.StatusTimestamp = DateTime.Now;
                dataContext.SaveChanges();
            }
        }
Example #5
0
        internal CorrespondenceItemStatus ProcessSmsCM(DataContext dataContext, CMSmsSettings settings, CorrespondenceItem correspondenceItem)
        {
            try
            {
                correspondenceItem.ExternalReference = "";

                // if there is a problem, invalidate the mobile number

                var messageBuilder = new CMSmsMessageBuilder();
                var request        =
                    messageBuilder.CreateMessage(
                        settings.ProductToken,
                        correspondenceItem.Route.Source,
                        correspondenceItem.Route.Target,
                        correspondenceItem.SmsPayload.Message);

                var webClient = new WebClient();
                webClient.Headers["Content-Type"] = messageBuilder.GetContentType();
                webClient.Encoding = System.Text.Encoding.UTF8;

                var response  = JObject.Parse(webClient.UploadString(settings.BaseUrl, request));
                var errorCode = (int)response["errorCode"];
                if (errorCode == 0)
                {
                    correspondenceItem.Status = CorrespondenceItemStatus.Dispatched;
                }
                else
                {
                    correspondenceItem.Status = CorrespondenceItemStatus.FailedToDispatch;
                    try
                    {
                        JArray messages = (JArray)response["messages"];
                        correspondenceItem.FailureReason = (string)messages[0]["messageDetails"];
                    }
                    catch
                    {
                        correspondenceItem.FailureReason = "Failed to parse error.";
                    }
                }

                correspondenceItem.StatusTimestamp = DateTime.Now;
                dataContext.SaveChanges();
            }
            catch (WebException wex)
            {
                Logger.Error(string.Format("{0} - {1}", wex.Status, wex.Message));

                correspondenceItem.Status          = CorrespondenceItemStatus.FailedToDispatch;
                correspondenceItem.StatusTimestamp = DateTime.Now;
                dataContext.SaveChanges();
            }
            catch (Exception ex)
            {
                Logger.Error(ex);

                correspondenceItem.Status          = CorrespondenceItemStatus.FailedToDispatch;
                correspondenceItem.StatusTimestamp = DateTime.Now;
                dataContext.SaveChanges();
            }

            return(correspondenceItem.Status);
        }