Example #1
0
        public bool AddMoreFriend(InviteMoreFriendDTO request)
        {
            if (request.Context == null)
            {
                base.AddError("Authenticate failed !");
                return(false);
            }
            if (request.Friends == null)
            {
                base.AddError("Data invaild!");
                return(false);
            }
            var m_orderDetailRepository  = UnitOfWork.Repository <DB_TB_ORDER_DETAIL>();
            var m_orderDetails           = m_orderDetailRepository.GetQueryable().Where(a => a.OrderId == request.OrderId).ToList();
            var m_orderAccountRepository = UnitOfWork.Repository <DB_TB_INVITE_ACCOUNT>();

            if (!m_orderDetails.Any())
            {
                base.AddError("Data invaild!");
                return(false);
            }

            foreach (var item in request.Friends)
            {
                if (!string.IsNullOrEmpty(item.Email))
                {
                    if (item.Id > 0)
                    {
                        bool checkExist = m_orderDetails.Where(a => a.AccountId == item.Id).FirstOrDefault() != null;

                        if (!checkExist)
                        {
                            var m_friendDetail = new DB_TB_ORDER_DETAIL()
                            {
                                OrderId     = request.OrderId,
                                AccountId   = item.Id,
                                CreatedDate = DateTime.Now
                            };
                            m_orderDetailRepository.Add(m_friendDetail);

                            // add account in invite
                            m_orderAccountRepository.Add(new DB_TB_INVITE_ACCOUNT()
                            {
                                AccountId   = item.Id,
                                IsConfirmed = false,
                                IsSent      = false,
                                InviteId    = request.OrderId
                            });
                        }
                    }
                }
            }
            UnitOfWork.Commit();
            // update  friend ship
            AddFriendShip(request.OrderId);

            // update restaurant per account
            addRestaurantAccount(request.OrderId);
            // send email
            SendMessageInvite(request.OrderId);
            return(!this.HasError);
        }
Example #2
0
        public bool AddInvite(InviteDTO request)
        {
            if (request.Context == null)
            {
                base.AddError("Authenticate failed !");
                return(false);
            }
            if (request.Friends == null)
            {
                base.AddError("Data invaild!");
                return(false);
            }

            var m_orderRepository        = UnitOfWork.Repository <DB_TB_ORDERS>();
            var m_friendRepository       = UnitOfWork.Repository <DB_TB_ACCOUNTS>();
            var m_orderDetailRepository  = UnitOfWork.Repository <DB_TB_ORDER_DETAIL>();
            var m_orderAccountRepository = UnitOfWork.Repository <DB_TB_INVITE_ACCOUNT>();

            var m_invite = new DB_TB_ORDERS()
            {
                Title        = request.Title,
                LunchDate    = request.LunchDate,
                OwnerId      = request.Context.Id,
                RestaurantId = request.PlaceId,
                CreatedDate  = DateTime.Now,
                Description  = request.Description
            };

            if (!string.IsNullOrEmpty(request.Place.Name) && string.IsNullOrEmpty(request.Place.Address))
            {
                var row = new DB_TB_RESTAURANT()
                {
                    Address     = request.Place.Address,
                    Name        = request.Place.Name,
                    Latitude    = request.Place.Latitude,
                    Longitude   = request.Place.Longitude,
                    MenuUrl     = request.Place.MenuUrl,
                    OwnerId     = request.Context.Id,
                    CreatedDate = DateTime.Now
                };
                UnitOfWork.Repository <DB_TB_RESTAURANT>().Add(row);
                m_invite.DB_TB_RESTAURANT = row;
            }
            // add current account to order detail
            var m_currentuserDetail = new DB_TB_ORDER_DETAIL()
            {
                DB_TB_ORDERS = m_invite,
                AccountId    = request.Context.Id,
                CreatedDate  = DateTime.Now
            };

            m_orderDetailRepository.Add(m_currentuserDetail);


            // add friend to order detail
            foreach (var item in request.Friends)
            {
                var rowAccountInvite = new DB_TB_INVITE_ACCOUNT()
                {
                    IsConfirmed  = false,
                    IsSent       = false,
                    DB_TB_ORDERS = m_invite
                };

                var m_inviteDetail = new DB_TB_ORDER_DETAIL()
                {
                    DB_TB_ORDERS = m_invite,
                };
                // FRIEND SHIP

                if (item.Id <= 0)
                {
                    // add friend ship

                    var m_account = new DB_TB_ACCOUNTS()
                    {
                        ACC_EMAIL      = item.Email,
                        ACC_IS_ACTIVED = false,
                        ACC_FIRSTNAME  = item.FirstName
                    };
                    // check exist by email
                    var exist = m_friendRepository.GetQueryable().Where(a => a.ACC_EMAIL == item.Email).FirstOrDefault();
                    if (exist == null)
                    {
                        m_friendRepository.Add(m_account);
                        m_inviteDetail.DB_TB_ACCOUNTS   = m_account;
                        rowAccountInvite.DB_TB_ACCOUNTS = m_account;
                    }
                    else
                    {
                        m_inviteDetail.AccountId   = exist.ACC_SYS_ID;
                        rowAccountInvite.AccountId = exist.ACC_SYS_ID;
                    }
                }
                else
                {
                    m_inviteDetail.AccountId   = item.Id;
                    rowAccountInvite.AccountId = item.Id;
                }
                m_inviteDetail.CreatedDate = DateTime.Now;
                m_orderDetailRepository.Add(m_inviteDetail);
                m_orderAccountRepository.Add(rowAccountInvite);
            }
            UnitOfWork.Commit();


            // update friend ship
            AddFriendShip(m_invite.Id);

            // update restaurant per account
            addRestaurantAccount(m_invite.Id);

            // send email
            SendMessageInvite(m_invite.Id);


            return(!this.HasError);
        }