示例#1
0
        public ResponseBase SaveNewPurchase(int?MusicId, PaskolUser Buyer, double Total, Guid permId)
        {
            ResponseBase res = new ResponseBase();

            try
            {
                Music music = null;

                if (MusicId != null && Buyer != null)
                {
                    music = _musicRep.GetByID(MusicId.Value);

                    if (music != null)
                    {
                        var file = new Model.File()
                        {
                            FileType = FileType.PDF,
                            suffix   = ".pdf",
                            UserId   = Buyer.Id,
                        };
                        Purchase newPurchase = new Purchase();
                        newPurchase.Customer          = Buyer;
                        newPurchase.Music             = music;
                        newPurchase.PurchaseCost      = Total;
                        newPurchase.PurchaseStatus    = PurchaseStatus.NotPaidToArtist;
                        newPurchase.PurchaseDate      = DateTime.Now;
                        newPurchase.Permision         = _permissionRep.GetByID(permId);
                        newPurchase.CustomerReference = "";//TODO
                        newPurchase.PurchaseAgreement = file;
                        this._rep.Add(newPurchase);
                        this._uow.Commit();

                        string pathToDownload = string.Format(CommonHelper.GetBaseUrl() +
                                                              "/File/GetFile?FileId={0}&UserId={1}&FileType={2}&version={3}&suffix={4}&FileName={5}"
                                                              , music.WAVFileID, music.ArtistID, FileType.Music,
                                                              music.WAVFile.version, music.WAVFile.suffix, music.HebrewName);
                        string permissions =
                            string.Join(", ", newPurchase.Permision.PropertyValues
                                        .Where(pv => !pv.PermissionProperty.IsCostLevel)
                                        .Select(pv => pv.PermissionProperty.Name + " - " + pv.Name));
                        // Create Report
                        _pdfService.PurchaseAgreement(
                            WebConf.FSBaseRoute,
                            Path.GetFileName(file.RelativePath),
                            Buyer.Id,
                            DateTime.Now,
                            Buyer.UserName,
                            Buyer.Email,
                            music.HebrewName,
                            music.MusicWriter,
                            music.MusicComposer,
                            music.MusicPerformer,
                            permissions,
                            newPurchase.PurchaseCost.HasValue ? newPurchase.PurchaseCost.Value : 0,
                            newPurchase.CustomerReference,
                            newPurchase.Music.Exceptions);

                        // notify artist and customer
                        this._emailSrv.AlertArtistPurchaseSuccess(newPurchase.Music.Artist.User.Email);
                        this._emailSrv.AlertBuyerPurchaseSuccess(newPurchase.Customer.Email, pathToDownload);
                        res.Success = true;
                    }
                }

                if (music == null || Buyer == null)
                {
                    res.Success = false;
                    res.Message = "לא הצלחנו לזהות לקוח או מוזיקה";
                }
            }
            catch (Exception e)
            {
                res.Message = e.Message;
                res.Success = false;
            }
            return(res);
        }
示例#2
0
        public ResponseBase ConfirmPhonePurchase(Purchase ConfPurchase, ConfirmTypeAction confirmAction)
        {
            ResponseBase res = new ResponseBase();

            try
            {
                var purchase = this._purchasseRep.GetByID(ConfPurchase.PurchaseId);

                if (purchase != null)
                {
                    // delete from confirmation table
                    Confirmation conf = ((ConfirmationRepository)this._rep)
                                        .GetByEntityId(ConfPurchase.PurchaseId.ToString());

                    if (conf != null)
                    {
                        switch (confirmAction)
                        {
                        case ConfirmTypeAction.Ok:
                            var file = new Model.File()
                            {
                                FileType = FileType.PDF,
                                suffix   = ".pdf",
                                UserId   = ConfPurchase.Customer.Id,
                            };
                            // save that paid by customer but not paid to artist
                            purchase.PurchaseStatus    = PurchaseStatus.NotPaidToArtist;
                            purchase.Note              = " שולם.. " + ConfPurchase.Note;
                            purchase.PurchaseCost      = ConfPurchase.PurchaseCost;
                            purchase.CustomerReference = ConfPurchase.CustomerReference;
                            purchase.PurchaseAgreement = file;
                            this._purchasseRep.Update(purchase);
                            this._rep.Delete(conf);
                            this._uow.Commit();

                            string pathToDownload = string.Format(CommonHelper.GetBaseUrl() +
                                                                  "/File/GetFile?FileId={0}&UserId={1}&FileType={2}&version={3}&suffix={4}&FileName={5}"
                                                                  , purchase.Music.WAVFileID, purchase.Music.ArtistID, FileType.Music,
                                                                  purchase.Music.WAVFile.version, purchase.Music.WAVFile.suffix, purchase.Music.HebrewName);

                            string permissions =
                                string.Join(", ", purchase.Permision.PropertyValues
                                            .Where(pv => !pv.PermissionProperty.IsCostLevel)
                                            .Select(pv => pv.PermissionProperty.Name + " - " + pv.Name));

                            // Create Report
                            _pdfService.PurchaseAgreement(
                                WebConf.FSBaseRoute,
                                Path.GetFileName(file.RelativePath),
                                purchase.Customer.Id,
                                DateTime.Now,
                                purchase.Customer.UserName,
                                purchase.Customer.Email,
                                purchase.Music.HebrewName,
                                purchase.Music.MusicWriter,
                                purchase.Music.MusicComposer,
                                purchase.Music.MusicPerformer,
                                permissions,
                                purchase.PurchaseCost.HasValue ? purchase.PurchaseCost.Value : 0,
                                purchase.CustomerReference,
                                purchase.Music.Exceptions);

                            // Send email
                            _emailService.AlertArtistPurchaseSuccess(purchase.Music.Artist.User.Email);
                            _emailService.AlertBuyerPurchaseSuccess(purchase.Customer.Email, pathToDownload);

                            break;

                        case ConfirmTypeAction.Decline:
                            purchase.Note = " בוטל " + ConfPurchase.Note;
                            this._purchasseRep.Update(purchase);
                            this._uow.Commit();
                            break;
                        }
                        res.Success = true;
                    }
                }
                else
                {
                    res.Message = "הרכישה המבוקשת לעדכון לא נמצאה";
                    res.Success = false;
                }
            }
            catch (Exception e)
            {
                res.Message = e.Message;
                res.Success = false;
            }

            return(res);
        }